Перемещать и нумеровать файлы с одинаковыми именами в новом каталоге
У меня есть каталог с (много) подкаталогами типа
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