尝试重命名 Linux 服务器上的一系列文件。找到我想要的文件很容易:
find . -type f -wholename \*.mbox
当然,作为mbox文件,有的文件名中有空格,所以变成:
find . -type f -wholename \*.mbox -print0
我正在使用 xargs 来重命名文件:
find . -type f -wholename \*.mbox -print0 | xargs -0 -I{} echo ${"{}"/.mbox/}
给定 INBOX.mbox,回显应该返回类似于 INBOX 的内容,但是,bash 提示:
bash: ${"{}"/.mbox/}: bad substitution
我该如何解决这个问题?如果可能的话,我想尽量将它保留在 find/xargs 解决方案中,这样我就不会在它周围添加很多循环结构。
最佳答案
尝试
find . -type f -wholename \*.mbox | sed 's/\(.*\)\.mbox/mv "\1.mbox" "\1"/' | sh
如果某些文件包含双引号字符,这不是 100% 的万无一失,但我想你可以忽略它:)
关于linux - 重命名一系列文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829963/