У меня есть список имен файлов в качестве вывода определенной команды. Мне нужно найти каждый из этих файлов в данном каталоге.Linux: перенаправление вывода команды на «find»
Я попробовал следующую команду:
ls -R /home/ABC/testDir/ | grep "\.java" | xargs find /home/ABC/someAnotherDir -iname
Но это дает мне следующую ошибку:
find: paths must precede expression: XYZ.java
Что бы правильный способ сделать это?
Спасибо. Это решило мою проблему. Есть ли причина, по которой xargs и перенаправление каналов не работают с find? – sachinpkale
Вы могли бы использовать флаг '-p' xargs, чтобы понять это: он запускает xargs в интерактивном режиме, печатая каждую команду, которую он собирается выполнить. Проблема здесь заключалась в том, что xargs сгенерировали команду _single_ 'find' с ** all ** добавленные имена файлов. В этом случае вам просто нужен параметр '--max-args', чтобы запустить 1 команду' find' для каждого имени файла в вашем списке: 'ls -R/home/ABC/testDir/| grep "\ .java" | xargs --max-args = 1 find/home/ABC/someAnotherDir -iname' –