Перемещать и нумеровать файлы с одинаковыми именами в новом каталоге

У меня есть каталог с (много) подкаталогами типа

td.0000000
td.0000050
td.0000100
etc.

в каждом подкаталоге у меня есть файл с именем "density.cube"

Я хотел бы переместить все "density.cube" в новый подкаталог "td"

td/density0000000.cube
td/density0000050.cube
td/density0000100.cube
etc.

или по крайней мере

td/density.cube0000000
td/density.cube0000050
td/density.cube0000100
etc.

Как я мог этого добиться? У меня есть база в bash и python, но этого явно недостаточно...

Спасибо!

2 ответа

Решение

Вы можете использовать команду поиска.

find /your/path/here/to/the/parent/directory/that/has/all/the/folders -name density.* type f -exec cp {} /path/to/where/you/wanna/move/them +

-name соответствует имени файлов, которые вы хотите получить

-type f соответствует только файлам, а не папкам с таким именем

-exec позволяет выполнять любые команды по результатам

cp команда копирования в linux

{} подставьте результаты команды поиска (ваши файлы, которые соответствуют)

+ запускает эту команду exec для каждого соответствующего файла.

Этот скрипт bash должен помочь вам:

# create the td directory
mkdir td

# for every subdirectory of name td.*
for file in td.*
do
    # get its number
    number=$(echo $file | cut -d'.' -f 2)

    # and move the density.cube from that subdir to td with new name
    mv $file/density.cube td/density${number}.cube
done
Другие вопросы по тегам