Мне нужно переименовать все файлы изображений в каталоге и назвать их так же, как называется папка, в которой они находятся... Возможно ли это с помощью скрипта Bash?
Мне также нужно пронумеровать их (0001.jpg, 0002.jpg, 0003.jpg, и т. д.) последовательно. Проблема в том, что между номерами есть некоторые скачки.. (0018.jpg, 0019.jpg, 0025.jpg, 0026.jpg, и т. д.) Я хотел бы переименовать 0025.jpg в 0020.jpg, а 0026.jpg в 0021.jpg и т. д.
решение1
Да, это возможно. Вы можете использовать find /search/path -type d
для поиска всех каталогов и использовать опцию -exec для выполнения некоторых действий с путем к каталогу в качестве параметра. И вы можете иметь скрипт bash, который запускается NUM=0; for file in /path/to/folder/*.jpg; do mv file NUM.jpg; let "NUM=NUM+1"; done;
или что-то вроде этого
решение2
Чтобы использовать эту команду, вам необходимо находиться в каталоге, где находятся файлы .jpg, или вам придется немного настроить команду.
let a=0; for i in *.jpg; do let a=a+1; b=`basename $PWD`; c=`printf %04d$b.jpg $a`; mv $i $c; done
Вывод будет выглядеть так:
0001<dirname>.jpg