Как вывести список всех файлов на жестком диске с помощью команды «найти»?

Я хотел бы перечислить все файлы на жестком диске, включая размер, дату последнего изменения и абсолютный путь.

формат идеи:

[file size] [last modified date] [absolute path] [ filename] 

Я пытался:

ls -lhR | awk -v PWD=$PWD '{printf("%4s %4s %2s %5s %s/%s\n", $5, $6, $7, $8, PWD, $9); }' >> /tmp/report.list 

Он работал идеально, пока не попал в некоторые файлы / каталоги с пробелом между ними ... Итак, я попытался:

find . -name "*" -exec du -sh {} \; -exec date -r {} \; -exec echo " " \; >> /tmp/report.list

Но вывод кажется разбитым на 3 строки вместо 2, и путь печати не является абсолютным путем к файлу.

Что мне делать?

2
задан 4 June 2015 в 04:43

2 ответа

Можно использовать find -printf действие для вывода тех атрибутов непосредственно, например,

find "$PWD" -printf '%s\t%Tx\t%h\t%P\n'
  • %s: размер Файла в байтах.
  • %Tx: время последнего изменения Файла, в представлении даты локали
  • %h: Ведущие каталоги имени файла
  • %P: имя Файла с названием параметра командной строки, под которым это было найдено удаленным.

путь к каталогу (%h) печатается относительно параметра пути командной строки, с которым эти find вызывается команда: путем определения рабочего каталога с помощью $PWD, это становится абсолютным.

0
ответ дан 4 June 2015 в 04:43

Можно использовать -printf опция в находке:

find / -type "f" -printf "%s\t%TY-%Tm-%Td\t%p\n" > file.txt

Это делает файл с форматом:

[размер в байтах] ВКЛАДКА [В последний раз измененная дата в формате YYYY-mm-dd] ВКЛАДКА [ПОЛНЫЙ ПУТЬ]

Это будет работать на полной файловой структуре.

Замена каждый \t с пространством, если Вы не хотите его разграниченная вкладка. Используя man find можно найти другие параметры формата для -printf опция в find.

0
ответ дан 4 June 2015 в 04:43

Другие вопросы по тегам:

Похожие вопросы: