Я пытаюсь запустить команду, чтобы найти все файлы, начинающиеся с 'geo', и посмотреть, когда они были отредактированы. Я пытаюсь следовать, но, к сожалению, мне не везет ..
Есть ли параметр для stat для отображения имени файла или мне нужен многострочный сценарий bash ...
Это работает:
find . -name 'geo*' -exec stat -c%y {} \;
Это не:
# find . -name 'geo*' -exec echo {}&&stat -c%y {} \;
find: missing argument to `-exec'
Можно использовать %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'
Использование:
find . -name 'geo*' -exec stat -c%n\ %y {} \;
Использование stat --help
для большего количества информации
Это не работает потому что & & то, что Вы добавляете к команде:
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