объединить несколько файлов в нескольких подкаталогах в 1 файл для каждого подкаталога и удалить исходные файлы

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
0
15.01.2021, 22:15
1 ответ

Вы можете использовать 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"' _ {} \;
2
18.03.2021, 22:36

Теги

Похожие вопросы