Использование find и stat для отображения имени файла (ов) и статистики

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

Есть ли параметр для stat для отображения имени файла или мне нужен многострочный сценарий bash ...

Это работает:

find . -name 'geo*' -exec stat -c%y {} \;

Это не:

# find . -name 'geo*' -exec echo {}&&stat -c%y {} \;
find: missing argument to `-exec'
3
задан 4 May 2014 в 00:09

3 ответа

Можно использовать %n для имени файла в статистике

find . -name 'geo*' -exec stat -c '%y       %n' {} \;

, С другой стороны, можно распечатать время изменения файла как %Tk (где k спецификатор даты и времени, подобный используемым функцией 'C' strftime), и имя %p непосредственно от команды находки, например,

find . -name 'geo*' -printf '%Tc %p\n' 

или в формате ближе к тому из stat -y

find . -name 'geo*' -printf '%TY-%Tm-%Td %TT %Tz    %p\n'
0
ответ дан 4 May 2014 в 00:09

Использование:

find . -name 'geo*' -exec stat -c%n\ %y {} \;

Использование stat --help для большего количества информации

0
ответ дан 4 May 2014 в 00:09

Это не работает потому что & & то, что Вы добавляете к команде:

execve("/usr/bin/find", ["find", ".", "-name", "geo*", "-exec", "echo", "{}"], [/* 56 vars */]) = 0
brk(0)                                  = 0x9914000

, Как Вы видите, эти &&, съеден оболочкой, и никогда не достигайте find. Можно использовать решение PaulB в этом случае:

find . -name 'geo*' -exec stat -c%n%y {} \;
./.steam/ubuntu12_32/steam-runtime/i386/usr/share/X11/locale/georgian-academy2013-02-20 06:03:01.000000000 -0400
./.steam/ubuntu12_32/steam-runtime/i386/usr/share/X11/locale/georgian-ps2013-02-20 06:03:01.000000000 -0400
./.PlayOnLinux/fonts/georgiai.ttf2014-03-21 17:32:48.427937178 -0400
0
ответ дан 4 May 2014 в 00:09

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

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