Вы можете использовать переданную по команде команду с комбинацией ls
, grep
, xargs
и cp
.
Итак, вы начинаете с получения списка файлов
ls
затем вы фильтруете их с помощью egrep -e
, grep -e
или любой другой разновидности grep
Mac, используемой для их терминала. Если вы хотите найти все файлы, заканчивающиеся текстом, вы можете использовать регулярное выражение .txt$
(что означает «.txt»)
ls | egrep -e "yourRegexExpression"
После этого вы получаете входной поток, но cp
не работает с входными потоками и принимает только несколько аргументов, поэтому мы используем xargs для преобразования его в аргументы. Последний шаг - добавить флаг -t
к аргументу, чтобы указать, что следующим аргументом является целевой каталог.
ls | egrep -e "yourRegexExpression" | xargs cp -t DIRECTORY
Надеюсь, это поможет!
Редактировать
Извините, я не прочитал вопрос достаточно хорошо, я обновился, чтобы соответствовать вашей проблеме. Здесь вы можете видеть, что команда egrep
компилирует довольно большую строку регулярного выражения со всеми именами файлов таким образом (filename1|filename2|...|fileN)
. $ () Оценивает команду внутри и использует tr
для перевода newLines в "|" для регулярного выражения.
ls | egrep -e "("$(cat yourtextfile.txt | tr "\n" "|")")" | xargs cp -t DIRECTORY