переместить все файлы из папки A в B при наличии определенной строки - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь переместить файлы из папки A в папку B, когда файл содержит определенную строку:

grep -Rli '22/05/2018' ads/ | awk -F  "//" '{print $2}' | xargs cp $0 projection/$1

cp: illegal option -- b
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory

как это исправить?

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Когда у вас есть список имен файлов, которые вы хотите скопировать, вы можете просто использовать xargs -I:

$ cat listOfFileNames | xargs -I{} cp {} $destFolder 

опция -I дает имя списку аргументов, позволяя вам разместить ихкуда хочешь.

0 голосов
/ 23 мая 2018

Следующее может помочь вам здесь.

grep -L -Z -r 'your_string_to_be_checked' . | xargs -0 -I{} mv {} target_directory/

Объяснение:

grep -L: означает, что файлы, которые НЕ имеютэта конкретная строка, которую мы ищем.

-Z: означает, что вывод должен содержать \0 в именах файлов, чтобы пространство не использовалось в качестве разделителя.

-I{} mv {} new_directory/ означает замену {} с именами файлов и сделайте его похожим на mv filename new_directory и запустите его, чтобы переместить файлы на новое место.

Я использую mv, здесь вы также можете использовать cp.

0 голосов
/ 23 мая 2018

Не уверен, почему вы используете awk.

Решение:

grep -lir '22/05/2018' ~/ads/* | xargs cp -t $DEST_FOLDER

Источник

...