Bash цикл по каталогу и переименовать каждый файл - PullRequest
2 голосов
/ 15 ноября 2011

Я ужасно пишу сценарии bash, но мне интересно, возможно ли рекурсивно пройтись по каталогу и переименовать все файлы в нем с помощью «1.png», «2.png» и т. Д., Но мне нужно это перезапуск по одному для каждой новой папки, в которую он входит. Вот скрипт, который работает, но делает это только для одного каталога.

cd ./directory
cnt=1
for fname in *
do
    mv $fname ${cnt}.png
    cnt=$(( $cnt + 1 ))
done

Заранее спасибо

EDIT Кто-нибудь может написать этот код? Я понятия не имею, как писать bash, и это меня очень смущает

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Использование find - отличная идея.Вы можете использовать find со следующим синтаксисом, чтобы найти все каталоги внутри вашего каталога и применить ваш скрипт к найденным каталогам:

find /directory -type d -exec youscript.sh {} \;

-type d означает, что вы хотите найти только каталоги

exec youscript.sh {} \;запускает ваш скрипт для каждого найденного каталога и передает ему это имя каталога в качестве параметра

1 голос
/ 15 ноября 2011

Используйте find(1), чтобы получить список файлов, а затем делайте с ним что угодно.

...