linux 递归重命名文件名

linux rename file names recursively

我需要递归地将 bash-sdl2-compile.sh 重命名为 compile.sh
尝试使用 'rename' 失败,显然安全功能不允许 'bash' 字,即

find ./ -name "bash-sdl2-compile.sh" -print0 | xargs -0 rename "bash-sdl2-compile.sh" "bash-sdl2-compile/compile"

错误消息:在(用户提供的代码)处使用“strict subs”时不允许裸词“bash”。 xargs:重命名:退出,状态为 255;中止

如何递归重命名 linux 个文件?

    dir1
       |_project1
                |_ bash-sdl2-compile.sh
    dir2
       |_project2
                |_ bash-sdl2-compile.sh
    dir3
       |_project3
                |_ bash-sdl2-compile.sh
  . . . 

因此,将每个“bash-sdl2-compile.sh”重命名为“compile.sh”

不用xargsfind就够了:

find . -name bash-sdl2-compile.sh -execdir mv -i {} compile.sh ";"

(在尝试之前备份你的整个树)