rename -n '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg
Здесь используется perl команда переименования (, также известная как prename
иfile-rename
). Это , а не , которую следует путать с командой rename
из утилиты -linux, которая имеет совершенно другие параметры и возможности строки команды -.
Сначала он преобразует имя файла в нижний регистр с помощью функции Perl lc()
, а затем удаляет все слова и символы, упомянутые вами либо в тексте, либо в коде примера.
Опция -n
приводит к тому, что rename
выполняется пробный -прогон -, он покажет вам только то, что он будет делать, если вы позволите. Чтобы он действительно переименовывал файлы, удалите -n
или замените его на -v
для подробного вывода.
напр.
$ touch BILD{00..05}_CMYK_freigestellt_RENDER_3D.jpg
$ rename -v '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg
BILD00_CMYK_freigestellt_RENDER_3D.jpg renamed as bild00.jpg
BILD01_CMYK_freigestellt_RENDER_3D.jpg renamed as bild01.jpg
BILD02_CMYK_freigestellt_RENDER_3D.jpg renamed as bild02.jpg
BILD03_CMYK_freigestellt_RENDER_3D.jpg renamed as bild03.jpg
BILD04_CMYK_freigestellt_RENDER_3D.jpg renamed as bild04.jpg
BILD05_CMYK_freigestellt_RENDER_3D.jpg renamed as bild05.jpg
Вы можете использовать find
в сочетании с флагом -execdir
.Это становится таким же простым, как следующее:
find DIR/ -type f -execdir bash -c 'cat -- $1 >> "${PWD##*/}_merged.txt"' _ {} \;
Я немного модифицировал приведенный выше вкладыш -, чтобы удалить исходные файлы.
find DIR/ -type f -execdir bash -c 'for f; do cat -- $f >> "${PWD##*/}_merged.txt"; done; [[ $f != *${PWD##*/}* ]] && rm -v "$f"' _ {} \;