Рейтинг:0

Скрипт bash для одновременного переименования файлов из разных каталогов

флаг us

Если у меня есть каталог с именем /all_images, а внутри этого каталога есть множество каталогов, все каталоги с именами блюдо_номер как показано ниже. и внутри каждого каталога блюд есть одно изображение с именем rgb.png. Как я могу переименовать все файлы изображений, чтобы они были именем его каталога.

Перед

|
âââ блюдо_1
â âââ rgb.png
✨ ✨ блюдо_2
â âââ rgb.png
☝️тарелка_3
â âââ rgb.png
✨ ✨ блюдо_4
â âââ rgb.png
âââ блюдо_5
    âââ rgb.png

После

|
âââ блюдо_1
â âââ тарелка_1.png
✨ ✨ блюдо_2
â âââ тарелка_2.png
☝️тарелка_3
â âââ тарелка_3.png
✨ ✨ блюдо_4
â âââ тарелка_4.png
âââ блюдо_5
    âââ блюдо_5.png
Рейтинг:3
флаг hr

Достаточно простого цикла оболочки:

для d в тарелке_*; делать 
  echo mv "$d/rgb.png" "$d/$d.png"
сделано

или (если вам нужно запустить его откуда-то, кроме содержащего каталога)

для d в path/to/dish_*; делать 
  f="${d##*/}.png"
  echo mv "$d/rgb.png" "$d/$f"
сделано

Удалить эхо как только вы убедитесь, что это будет правильно.


Если вы хотите пофантазировать, вы можете сделать что-то подобное с GNU. параллельно:

параллельное эхо mv {}/rgb.png {}/{/.}.png ::: path/to/dish_*

или (если список аргументов слишком длинный)

printf '%s\0' путь/к/тарелке_* | параллель --null echo mv {}/rgb.png {}/{/.}.png

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.