/ / Копирайте всички файлове с определено разширение в друга директория, като променяте разширението - linux, bash, shell, grep, cut

Копирайте всички файлове с определено разширение в друга директория, докато променяте разширението - linux, bash, shell, grep, cut

Искам да копирам всички файлове с разширение 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