Gle*_*rry 2 linux file find xargs
试图在linux服务器上重命名一系列文件.找到我想要的文件很简单:
find . -type f -wholename \*.mbox
Run Code Online (Sandbox Code Playgroud)
当然,作为mbox文件,其中一些在名称中有空格,因此它变为:
find . -type f -wholename \*.mbox -print0
Run Code Online (Sandbox Code Playgroud)
我正在管道到xargs,以便我可以重命名文件:
find . -type f -wholename \*.mbox -print0 | xargs -0 -I{} echo ${"{}"/.mbox/}
Run Code Online (Sandbox Code Playgroud)
在给出INBOX.mbox的情况下,回声应该返回类似INBOX的东西,然而,bash抱怨:
bash: ${"{}"/.mbox/}: bad substitution
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?如果可能的话,我想尝试将它保存在find/xargs解决方案中,这样我就不会在它周围添加很多循环结构.
尝试
find . -type f -wholename \*.mbox | sed 's/\(.*\)\.mbox/mv "\1.mbox" "\1"/' | sh
Run Code Online (Sandbox Code Playgroud)
如果某些文件包含双引号字符,这不是100%的傻瓜证明,但我认为你可以忽略它:)