Искам да копирам всички файлове с разширение aaa
от директорията a
към директорията b
, замествайки разширението до bbb
, Опитах се да направя нещо подобно:
ls a | grep .bla$ | cut --delimiter=. -f 1 | xargs cp a/{}.aaa b/{}.bbb
Но това наистина е на разстояние. Искам oneliner, а не баш скрипт.
Отговори:
4 за отговор № 1Мисля, че проблемът е твърде сложен, ако целевата директория е празна, можете да направите следното една подложка:
cp a/*.aaa b; rename "s/aaa$/bbb/" b/*.aaa
Скриптът използва две команди с a ;
между тях, за да изпълни втория след първия.
cp a/*.aaa b
копира всички файлове с шаблона a/*.aaa
към b
директория. Като правите това с едно обаждане, командата ще бъде по-ефективна от използването на тръба.
Следващия rename
е полезен инструмент за извършване на регенериране намерите и замяна върху имената на файловете. Чрез уточняване b/*.aaa
ще преименувате всички файлове в b
с *.aaa
регулярен. Сега само трябва да посочите какво да заменяте, това се прави с регенерирането:
s/aaa$/bbb/
aaa$
означава, че последните три знака трябва да бъдат aaa
и ги замените bbb
за всеки файл.
2 за отговор № 2
Друг начин
cp -r a/ b/;for i in b/*; do mv {$i%.aaa}{.aaa,.bbb};done