【发布时间】:2018-04-30 02:58:28
【问题描述】:
我在目录树中有数千个文件,文件名如下:
/Folder 0001 - 0500/0001 - Portrait - House.jpg
/Folder 2500 - 3000/2505 - Landscape - Mountain.jpg
使用 linux 命令行我想删除文件名中第一个单词之前的所有内容,例如“0001 -”和“2500 -”。新文件名如下所示:
/Folder 0001 - 0500/Portrait - House.jpg
/Folder 2500 - 3000/Landscape - Mountain.jpg
我修改了一个可行的脚本:
find . -type f -name "*-*" -exec bash -c 'f="$1"; g="${f/[[:digit:]]/ -/ /}"; echo mv -- "$f" "$g"' _ '{}' \;
这里的问题是它会删除部分路径而不是文件名,因此实际输出会生成如下文件名:
/Folder -/ /001 - 0500/0001 - Portrait - House.jpg
/Folder -/ /500 - 3000/2505 - Landscape - Mountain.jpg
如何修改此脚本以使用我描述的模式重命名文件?
【问题讨论】:
-
它是如何屠宰路径的,你能举一个你得到的输出的例子吗?
-
@123,它将从路径中删除数字,仅此而已。
-
正确。它从路径中删除数字而不是文件名。