我正在修改一个简单的 BASH 脚本以从我的 MP3 文件的开头删除数字和连字符。目的是重命名文件,例如:
到:
我有这个脚本适用于当前目录中的所有文件
$ for f in [0-9]*; do mv "$f" "`echo $f | sed 's/^[0-9]*\W*//'`"; done
Run Code Online (Sandbox Code Playgroud)
并修改它以查找子文件夹中的所有文件:
#!/bin/bash
dir=''
IFS='
'
for f in $(find $dir * -type f) ; do
mv "$f" "`echo $f | sed 's/^[0-9]*\W*//'`";
done
Run Code Online (Sandbox Code Playgroud)
问题是该$f值返回子文件夹和文件名,该mv行查找以 [0-9] 开头的文件,因此子文件夹中的任何文件都不会被重命名。
例如文件mp3/1-1 Song 1.mp3开始mp3/,不以数字开头,所以它没有重命名。
有没有办法可以将目录和文件值读取到单独的变量中,或者有更好的方法吗?
谢谢
find & sed:我会要求你首先删除最后的管道和 sh,并查看 mv 命令是否正确生成,然后你可以运行命令,如下所示:
find $dir -type f | sed 's|\(.*/\)[^A-Z]*\([A-Z].*\)|mv \"&\" \"\1\2\"|' | sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11283 次 |
| 最近记录: |