Я бы хотел найти каталог для любого файла, который соответствует любому из слов. Если файл соответствует, я хотел бы скопировать этот файл в новый каталог. Я создал небольшую партию тестовых файлов и получил следующий код работы:Масштабирование grep найти и скопировать в большую папку (xargs?)
cp `grep -lir 'word\|word2\|word3\|word4\|word5' '/Users/originallocation'` '/Users/newlocation'
К сожалению, когда я запускаю этот код на большой папке с несколькими тысячами файлов, которые он говорит, что список аргументов слишком длинный для cp
. Я думаю, мне нужно зацикливать это или использовать xargs
, но я не могу понять, как сделать преобразование.
+1: Обратите внимание, что '-t вариант target' в GNU' cp' очень полезно, но не везде с другими вариантами 'cp'. –
@JonathanLeffler Да, я просто добавил обходное решение. Существуют ли какие-либо важные платформы помимо Mac, которым не хватает '-t'? – John1024
Это зависит от вашего определения «важно». AIX, HP-UX, Solaris, * BSD затронуты; в основном, это только платформы, которые используют GNU core utils (или около того), которые имеют это, и AFAIK, что означает Linux, и все остальное Unix-подобного не делает. У меня еще нет доступа к AIX, HP-UX, Solaris (за последние 9 месяцев или около того), но с тех пор они, вероятно, не изменились. –