Мне нужно переименовать все файлы изображений в каталоге и назвать их так, как называется папка, в которой они находятся.

Мне нужно переименовать все файлы изображений в каталоге и назвать их так, как называется папка, в которой они находятся.

Мне нужно переименовать все файлы изображений в каталоге и назвать их так же, как называется папка, в которой они находятся... Возможно ли это с помощью скрипта 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

Связанный контент