Допустим, у меня есть следующие подкаталоги
./a/, ./b/, ./c/, ...
То есть в моем текущем рабочем каталоге находятся эти подкаталоги a/
, b/
и c/
, а в каждом из этих подкаталогов находятся файлы,В каталоге a/
находится файл a.in
, в каталоге b/
находится файл b.in
и т. Д.
Теперь я хочу скопировать каждый файл .in
в файл .out
,то есть с a.in
до a.out
и b.in
до b.out
, и я хочу, чтобы они находились в каталогах, из которых они были скопированы.Так что a.out
будет найдено в каталоге a/
.
Я пробовал различные подходы, такие как
find ./ -name '*.in'|cp * *.out
, который не работает, потому что он считает, что *.out
каталог.Также попытался
ls -d */ | cd; cp *.in *.out
, но он бы перечислял подкаталоги, входил в каждый из них, но не позволял бы cp
делать свою работу (которая все еще не работает)
Команда
find ./ -name '*.in'
работает нормально.Есть ли способ передать аргументы в оператор присваивания?Например,
find ./ -name '*.in'| assign filename=|cp filename filename.out
, где assign filename=
дает имени файла значение каждого .in
файла.На самом деле, было бы еще лучше, если бы назначение могло избавиться от расширения файла .in
, тогда вместо получения a.in.out
мы бы получили предпочтительный a.out
Спасибо за ваше время.