Как отправить cp список имен файлов (с пробелами) - PullRequest
0 голосов
/ 31 мая 2011

Egrep генерирует для меня список файлов на основе их содержимого, но я делаю что-то не так, пытаясь передать этот список в cp в качестве аргументов.(Моя оболочка bash).Я думал, что буду избегать пробелов в именах файлов и преобразовывать символы новой строки в пробелы, но cp, кажется, игнорирует экранированные пробелы в конвейерном вводе.

Пример имени файла: 2011-05-15\ 14.43.41.txt

$ cp `egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' '` ~/crashreportstemp/</p> <p>cp: cannot stat `2011-05-15': No such file or directory

Когда я выполняю содержимое обратных галочек, я получаю вывод, который могу вставить прямо в cp.

Я тоже пытался использовать xargs:

$ egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' | xargs cp ~/crashreportstemp

Но это заставляет cp рассматривать последний переданный файл как последний аргумент cp, игнорируя мой явный аргумент cp:

cp: target `2011-05-30 16.23.30.txt' is not a directory

I 'Я, очевидно, упускаю из виду правильный способ сделать это, пожалуйста, помогите!

Спасибо - Джейсон

1 Ответ

0 голосов
/ 31 мая 2011

Попробуйте что-то вроде этого:

egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' && echo ~/crashreportstemp | xargs cp

В вашей версии ~ / crashreportstemp передается как первый аргумент cp, а не как последний.

...