Например, я хочу искать пустые файлы в домашнем каталоге пользователя «адам».
Теперь я не знаю правильного пути для этого пользователя, поэтому мне нужно получить его от /etc/passwd
с помощью следующей команды:
grep ^adam: /etc/passwd | cut -d: -f6
Вывод: /home/adam (например) Затем выполните эту команду, чтобы найти пустые файлы.
find /home/adam -type f -size 0 -print
Можно ли это сделать одной командой?
Итак, я попробовал это:
grep ^adam: /etc/passwd | cut -d: -f6 | find -type f -size 0 -print
Очень близко... вот что я бы сделал (используя одну команду вместо двух):
find $(awk -F: '$1= = "adam"{print $6}' /etc/passwd) -type f -size 0
(Спасибо за предложение по улучшению, Эд)
С вашими grep
и cut
это тоже сработает:
find $(grep ^adam: /etc/passwd | cut -d: -f6) -type f -size 0
Эти двое используют подстановку команд...
Если вы предпочитаете pipe
, вы можете использовать xargs
:
grep ^adam: /etc/passwd | cut -d: -f6 | xargs -i find "{}" -type f -size 0