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 'Я, очевидно, упускаю из виду правильный способ сделать это, пожалуйста, помогите!
Спасибо - Джейсон