Linux конвейерная команда понимание
Я немного новичок в использовании Linux. Сейчас я играю с конвейерной обработкой. Может кто-нибудь сказать мне, почему это не работает:
ls | grep 2 | rm
(Я пытался удалить все файлы, содержащие 2 в их именах) ls | grep 2
часть работает (она возвращает все имена файлов с 2 в них), почему я не могу передать эти имена сейчас rm
удалить эти файлы?
спасибо четыре ур помощь заранее:)
1 ответ
Решение
rm
ожидает имена файлов в качестве аргументов, тогда как pipe отправляет имена файлов на стандартный ввод (stdin) rm
, Вы можете вместо этого сделать:
rm $(ls | grep 2)
удалить файлы. Таким образом, имена файлов передаются в качестве аргументов, а не на стандартный ввод rm
,
Я использовал ваши команды, чтобы объяснить проблему. В общем, вы не должны анализировать результат ls
команда.