Вывод информации в отдельный csv

Утро сообщество нужна коллективная помощь :))))

Есть такая необходимость, вытащить в отдельный csv информацию о папках, под папках и всех филах в них хранящихся, при условии, что в фаиле необходимо,что-бы о каждом файле была информация, имя, объём, путь к фаилу, а также время создания, модификации и использования. использую механизм «ls -aFGlRrh > ~/Desktop/files.csv но он не всё выводит, что мне не хватает? буду очень признателен за помощь!
https://www.google.com.ua/search?num=50&q=linux+convert+text+to+csv&oq=linux+convert+text+to+csv&gs_l=serp.3..0i7i30i19j0i8i30i19j0i30i19.7335.8520.0.8640.6.6.0.0.0.0.108.503.5j1.6.0....0...1c.1.64.serp..1.5.416...0i7i30j0i13j0i8i7i30j0i13i30j0i8i7i30i19.y1Rp7HCtRXE
svicer
https://www.google.com.ua/search?num=50&q=linux+convert+text+to+csv&oq=linux+convert+text+to+csv&gs_l=serp.3..0i7i30i19j0i8i30i19j0i30i19.7335.8520.0.8640.6.6.0.0.0.0.108.503.5j1.6.0....0...1c.1.64.serp..1.5.416...0i7i30j0i13j0i8i7i30j0i13i30j0i8i7i30i19.y1Rp7HCtRXE
Спасибо svicer что послали к гуглу, но всё таки я так и не нашёл правильный ответ, я использую аргумент ls может правельней задействовать использовать find или awk?
Попробуйте использовать find и stat
Возможно, даже можно обойтись одним find, используя опцию -printf.
Наверное, можно обойтись одним stat ….. но для начала нужно получить список всех файлов в требуемой директории
$ find /path -type f > listing
это без учета самих наименований директорий (файлы в них учитываются), но если они тоже нужны, то тогда так $ du -a ~/path | awk '{ print $2 }')
а затем читая построчно этот listing применять к указанным там файлам команду stat со следующими опциями
- n% - имя файла
- %s  - размер в байтах
- %x - время последнего доступа (обновляется когда файл открываете или когда он используется для других операций)
- %y - время последней модификации данных (обновляется когда изменяется содержимое файла или сохраняется файл)
- %z - время последнего изменения состояния (обновляется когда меняются атрибуты файла - владелец файла, права или файл перемещается на другую файловую систему. Также это время обновляется и при изменения времени модификации файла)
а чтобы легче было инерпретировать вывод и записать его сразу в виде типа .csv, удобнее разбить эту команду на несколько команд, типа такого …. (вывод оформлен без учета минут и секунд)
$ echo "`stat -c%n ~/file`;`stat -c%s ~/file`;`stat -c%x ~/file | awk '{ print $1 }'`;`stat -c%y ~/file | awk '{ print $1 }'`;`stat -c%z ~/file | awk '{ print $1 }'`"
.... примерный вывод ..... name_file;500;2016-08-08;2016-05-05;2016-07-19
…. ну и нужна несложная прога — построчное чтение listing + выполнение приведенной выше команды + построчная запись в выходной файл ….. Итог - файл типа .csv
Ошибки не исчезают с опытом - они просто умнеют
Предвижу вопрос по выводу в файл .csv ...... где то так (проверено .... но не должно быть пробелов в имени файла)
#!/bin/bash
cp /dev/null /path_file_out.csv
cat /path_file_listing | while read line
do
echo "`stat -c%n $line`;`stat -c%s $line`;`stat -c%x $line | awk '{ print $1 }'`;`stat -c%y $line | awk '{ print $1 }'`;`stat -c%z $line | awk '{ print $1 }'`" >> /path_file_out.csv
done
exit 0
UPD .... $ find /path -type f > /path_file_listing ...... или $ du -a ~/path | awk '{ print $2 }') > /path_file_listing ...... в зависимости от требований
Ошибки не исчезают с опытом - они просто умнеют
vasek
vasek
У вас Какие-тоСложныеКонструкции надо чтобы было так : ls > cvs: все просто, денег не прошу...
Ребят спасибо заранее, проверю отпишу!
svicer
как я понимаю ls не может отобразить все необходимые мне даты, исключительно дату создания!
vasek
Наверное, можно обойтись одним stat ….. но для начала нужно получить список всех файлов в требуемой директории
$ find /path -type f > listing
это без учета самих наименований директорий (файлы в них учитываются), но если они тоже нужны, то тогда так $ du -a ~/path | awk '{ print $2 }')
а затем читая построчно этот listing применять к указанным там файлам команду stat со следующими опциями
- n% - имя файла
- %s - размер в байтах
- %x - время последнего доступа (обновляется когда файл открываете или когда он используется для других операций)
- %y - время последней модификации данных (обновляется когда изменяется содержимое файла или сохраняется файл)
- %z - время последнего изменения состояния (обновляется когда меняются атрибуты файла - владелец файла, права или файл перемещается на другую файловую систему. Также это время обновляется и при изменения времени модификации файла)
а чтобы легче было инерпретировать вывод и записать его сразу в виде типа .csv, удобнее разбить эту команду на несколько команд, типа такого …. (вывод оформлен без учета минут и секунд)
$ echo "`stat -c%n ~/file`;`stat -c%s ~/file`;`stat -c%x ~/file | awk '{ print $1 }'`;`stat -c%y ~/file | awk '{ print $1 }'`;`stat -c%z ~/file | awk '{ print $1 }'`"
.... примерный вывод ..... name_file;500;2016-08-08;2016-05-05;2016-07-19
…. ну и нужна несложная прога — построчное чтение listing + выполнение приведенной выше команды + построчная запись в выходной файл ….. Итог - файл типа .csv
Что-то я немного запутался!

И так к примеру для начала как я понял мне необходимо зделать следующую команду
"du -a /Volumes/Storage/BBBETCD/etc | awk '{print $2}' > ~/Desktop/files.csv"

Потом как быть? куда засовывать "echo "`stat -c%n ~/file`;`stat -c%s ~/file`;`stat -c%x ~/file | awk '{ print $1 }'`;`stat -c%y ~/file | awk '{ print $1 }'`;`stat -c%z ~/file | awk '{ print $1 }'`"" продолжать это жу команду?

MyDestiny, учи матчасть...... тебе дали черновой вариант скрипта, вот его и запускай ....... рекомендую доработать скрипт для себя - можно в него включить и подготовку файла-listing + обязательно обработку ошибок и др. ...... а не хочешь учить матчасть, не берись.
А то получается как в сказке - тетенька дай водички попить, а то так кушать хочется, что переночевать негде .....
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.