从文件名中递归删除多个破折号

时间:2013-02-28 23:30:55

标签: bash rename

我想以递归方式删除具有多个破折号的文件名,以便 file --- name-3.jpg 变为 file-name-3.jpg 。这在单个文件夹中工作正常,但我想移动到父文件夹,然后运行命令。它也可以正常工作,直到它遇到一个也有多个破折号的文件夹名称,然后它会尝试重命名它们。

find . -type f -iname '*---*' -depth -exec rename 's/---/-/gi' {} +

parent_folder
  \sub--folder-1
     file--name-1.jpg <-- rename file-name-1.jpg
     file----name-2.jpg <-- rename file-name-2.jpg
  \sub----folder-2
     file--name-1.jpg <-- rename file-name-1.jpg
在CentOS服务器上使用bash

编辑

1 个答案:

答案 0 :(得分:1)

使用-execdir仅使用文件名从文件目录运行命令,而不是使用相对路径从当前目录运行它的-exec:

find . -depth -type f -iname '*---*' -execdir rename 's/---/-/gi' {} +