#linux #grep #find #cut
#linux #grep #Найти #вырезать
Вопрос:
Например, я хочу искать пустые файлы внутри домашнего каталога пользователя «adam».
Теперь я не знаю правильного пути для этого пользователя, поэтому мне нужно получить его /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
Ответ №1:
Очень близко … это то, что я бы сделал (используя одну команду вместо двух):
find $(awk -F: '$1=="adam"{print $6}' /etc/passwd) -type f -size 0
(Спасибо за предложение по улучшению, Ed)
С вашим grep
amp; 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