我刚开始学习Bash。我想做一个脚本来查找目录及其子目录中的某些特定文件夹,如果存在,则将其重命名为我们找到它的同一文件夹。某些子目录中可以包含相同的特定文件夹。
我用这个:
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
答案 0 :(得分:3)
您可以使用oneliner执行此操作:
find . -name "a" -type d -execdir rename 's/a/b/' {} \;
要命名的参数可能是正则表达式。
使用-type d
,它将找到所有目录。
-execdir
更改匹配项目的目录,然后执行rename
命令,将手头项目的文件名作为参数传递({}
)。