У меня есть эта структура каталогов:Могу ли я использовать xargs как часть пути к каталогу?
% ls /tmp/source_dir/
aa-aa/ bb-bb/ cc-cc/ morejunk/ somejunk/
% ls /tmp/dest_dir
aa-aa/ bb-bb/ blah/ blahblah/
Для каждого каталога в согласовании dest_dir ?? - ??, я хочу, чтобы скопировать соответствующий файл «goodfile» из source_dir. Я пробовал следующее безрезультатно:
% cd /tmp/dest_dir
/tmp/dest_dir% \ls -d ??-?? | xargs cp /tmp/source_dir/{}/goodfile {}
cp: cannot stat `/tmp/source_dir/{}/goodfile': No such file or directory
cp: cannot stat `{}': No such file or directory
cp: omitting directory `aa-aa'
/tmp/dest_dir% \ls -d ??-?? | xargs bash -c "cp /tmp/source_dir/{$0}/goodfile {$0}"
cp: cannot stat `/tmp/source_dir/{/bin/bash}/goodfile': No such file or directory
Несомненно, есть ли способ сделать это без написания отдельного сценария?
является то, что должно быть выполнено из/TMP/dest_dir? Если это так, вам нужно указать source_dir в пути где-то, правильно? – kslnet
Да. Вы можете сначала cd to/tmp/dest_dir или просто поместить путь enteri по команде, например find/folder/to/find -iname "?? - ??" -exec cp/folder/goodfile "{}" \; –
А, ладно, просто пришлось немного подстроить его: найти. -имя "??-??" -exec cp/tmp/source_dir/{}/goodfile {} \; – kslnet