linux - Bash - 在目录及其 sbdirectories 中查找多个特定文件夹并重命名这些特定文件夹

标签 linux bash shell unix

我刚刚开始学习 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

最佳答案

您可以使用 oneliner 来做到这一点:

查找 . -name "a"-type d -execdir 重命名's/a/b/' {}\;

要命名的参数可能是正则表达式。 使用 -type d 它将找到所有目录。 -execdir 更改为匹配项目的目录,然后执行 rename 命令,并将当前项目的文件名作为参数传递 ({} )。

关于linux - Bash - 在目录及其 sbdirectories 中查找多个特定文件夹并重命名这些特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29581325/

相关文章:

linux - 在 RHEL6.7 上用 sed 替换 sed

shell - 命令行/shell 帮助文本是否有 "standard"格式?

linux - 当关联的停止后进程被终止时,进程不会重生

linux - 树莓派 gstreamer1.0 alsasrc0 : Internal data flow error

linux - 使用“vi”编辑器的垃圾字符

bash - 在 Bash 中使用变量作为函数参数

macos - 如何在 MacOS Catalina 中创建运行 shell 脚本的应用程序包?

linux - 如何确定我的 git 存储库所在的 URL?

regex - inotifywait 根据修改的文件类型运行命令

bash - 使用 AppleScript + bash 发送文件对象