linux - 重命名一系列文件

标签 linux file find xargs

尝试重命名 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/

相关文章:

linux - 带有 Spreadsheet-ParseXLSX-0.17 的 Perl 5.10?

linux - 查找超过 3 天的目录并压缩其中的所有文件

intellij-idea - IntelliJ IDEA查找方法覆盖

objective-c - 如何使用 objective-c 使文件在 Finder 中不可见

c - 获取(不显示)C 中的文件和文件夹列表

shell - 如何在 BSD 查找中使用 xargs?

linux - 当我切换到 bash 时 Shell 脚本挂起 - Linux

linux - ./MakeOVPN.sh : line 12: [! -fDanielIphone.crt]:找不到命令

c - 如何从内核板损坏报告中获取信息?

从数据文件读取矩阵,然后计算它们的乘积,然后将结果矩阵打印到数据文件的代码