Я только начал изучать Bash. Я хочу сделать скрипт, чтобы найти определенные папки в каталоге и его подкаталогах, и если он существует, переименуйте его в ту же папку, где мы его нашли. Та же самая конкретная папка может быть в некоторых подкаталогах.Bash - Найдите несколько конкретных папок в каталоге и его sbdirectories и переименуйте эти папки.
Я использую это:
file=`find . -name a`
if [ -d $file ]
then
rename 's/a/b/' $file
fi
Но не работают. Есть ли способ сделать этот процесс?
Спасибо.
Наконец, я решил проблему с этим:
find . -name "a" -type d -execdir rename 's/a/b/' {} \; &>/dev/null
Извините, по ошибке используется -type f вместо -type d :) –
Я никогда не нашел find ... -exec ужасно полезным. Зачем? разве вы не хотели бы видеть список кандидатов до того, как будете его калечить? поэтому ... find * -name a -type d; затем повторите поиск ... | awk '{o = $ 1; sub ("/ \/a \ //", "/ b /", o) printf ("mv% s% s \ n", $ 1, o)} '... untested. переименовать? а не Mac OS X, должен быть Linux? –
Обычно я делаю это с помощью -exec, проще для более простых операций, но в этом случае ваш метод тоже качается. –