2013-05-31 4 views
0

Я пытаюсь использовать xargs для копирования файлов после их выбора с помощью этой командыxargs не работает в Linux

grep 'string' | awk '{print $2$3}' | xargs -I {} cp {} /dir1/dir2/dir3 

Я получаю следующее сообщение об ошибке на каждый файл я копирую

cp: cannot stat `/dir1/dir2/dir3/file1.jpeg': No such file or directory 

проблема в том, что он правильно сообщает мне каталог и говорит мне, что он не найден, file1.jpeg фактически находится в файле dir3, и весь маршрут на 100% правильный.

Я попытался использовать echo cp и я все еще получаю это сообщение на файл:

cp /dir1/dir2/dir3/file1.jpeg /new/directory/ 

Может кто-нибудь помочь? -Appreciated

+0

Вы хотите cp-файл из/dir1/dir2/dir3 или в этот каталог? – Roger

+0

Да Роджер, на самом деле несколько файлов – Error404

+0

Вы не получили мой вопрос, я хочу спросить/dir1/dir2/dir3 является исходным каталогом или целевым каталогом? – Roger

ответ

1

Вы можете удалить grep и awk и использовать find вместе с xargs.

Что-то вроде этого:

find /path/to/search/ -type f -iname "*string*" | xargs -0 cp -t /path/to/copy 

Вы также можете использовать exec вариант find и избежать xargs.

+0

На самом деле это не путь/путь/в/поиск, это результат предыдущей команды diff , Я попытался сказать так: 'diff folder1 folder2 | find findtyty f -iname "* string *" ..... 'и я получил эти 2 сообщения об ошибках. find: './.config': разрешение отклонено. xargs: слишком длинная строка аргументов – Error404

+0

теперь появляется новая ошибка: 'xargs: строка с аргументами слишком длинная' – Error404

Смежные вопросы