linux 修改当前目录包含子目录 下 aaa 开头的目录名及文件名 替换为 bbb开头目录名及文件名?

2024-12-12 14:45:44
推荐回答(4个)
回答1:

用find+exec命令结合rename命令可实现文件名“部分替换”

因为存有目录的替换,目录替换后,就无法继续搜索原目录了,所以,需要多次执行才能完成所有目录的替换。

while [ 1 ]
do
    find . -name "aaa*" -exec rename aaa bbb {} \;
    if [ $? -eq 0 ]  #如果替换中有错误,则上面命令执行结果会返回非0
    then
        break;
    fi
done
#注意,此命令缺陷是,当同一目录下,有aaa123文件,也有bbb123文件,则原bbb123文件将会被aaa123所覆盖!!

rename命令格式说明:

rename from to file...

第一个参数from:被替换掉的字符串
第二个参数to:替换成的字符串
第三个参数file:匹配要替换的文件模式    可以是单文件,也可以是匹配模式(多文件,如aaa*   aaa?   aaa?? ) *匹配多字符, ?匹配单字符

回答2:

这个简单的命令完成不了。用脚本或者是c/c++写个小程序。
首先将当前目录及其子目录和所有文件取出来,然后循环去匹配是否以aaa开头,如果是以aaa开头的则将aaa替换成bbb,后面部分不变。

回答3:

mv aaa bbb
OK?

回答4:

mv aaa bbb