LinuxForum.Fans
Тема

условие запуска команды после pipe

Автор: axe 4 сообщений 3112 просмотров
#330406
text
find /home/user/test -type f -mtime -7 | xargs stat --printf "%Y %s %n\n"

если первая команда возвращает пустоту, то вторая возвращает

stat: missing operand
Try `stat --help' for more information

если find вернул список файлов, то возвращается информация из stat

Можно ли сделать, чтобы вторая команда не запускалась если первая команда вернула пустоту?

#330408

мой моск неожиданно выдал такое решение:

text
for dir in `find /home/user/test -type f -mtime -7`; do stat --printf "%Y %s %n\n" $dir; done

но не знаю, плохо ли оно или хорошо

#330411
"axe⇓" написал:
мой моск неожиданно выдал такое решение:
for dir in `find /home/user/test -type f -mtime -7`; do stat --printf "%Y %s %n\n" $dir; done
но не знаю, плохо ли оно или хорошо

Очень не кошерно использовать for для этих целей, особенно если в названии файлов присутствуют пробелы.

ужо лучше использовать средства find в место xargs
В данном случае нужен ключик -exec

text
find /home/user/test -type f -mtime -7 -exec stat --printf "%Y %s %n\n" {} ;\
#330412

Спасибо!
Это то что мне надо, но чуть-чуть поправлю (последние два символа):

text
find /home/user/test -type f -mtime -7 -exec stat --printf "%Y %s %n\n" {} \;
Войдите или зарегистрируйтесь, чтобы ответить.