Вы ищете команду xargs
. Обычно вы используете его так:
find . -name src -print0 | xargs -I{} -0 echo {}
или для вашего явного вопроса:
find . -name src -print0 | xargs -I{} -0 cd {}
С помощью find
вы должны не объединять команды через конвейер.
У него есть хороший флаг -regex
, которому вы можете передать строку соответствия имени файла:
find. -regextype egrep -regex ".*facility_([0-9]*)\+SOURCE[0-9]*.*" -exec mv {} DIRECTORY \;
Окончательный \;
передает каждое из совпадающих имен файлов в mv
вместо {}
.
Как видите, вам нужно использовать .*
в начале и в конце регулярного выражения, потому что find
нужно обработать на весь путь:
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named './fubar3', you can use the regular expression '.*bar.' or '.*b.*3', but not 'f.*r3'.