有些文件名包含'?'
如您所知,Windows 对此类字符有问题。我想使用 xarg
递归重命名文件夹中的所有文件。例如
09 - grand hall?_10.mp3
应该是
09 - grand hall_10.mp3
最佳答案
for file in $(find <em>folder</em> -name '*.mp3'); do<br/>
mv -v "$file" $(echo "$file" | tr ? _);<br/>
done
上面有空格问题;这样更好:
find <em>folder</em> -name '*.mp3' -exec echo "'{}'" \; |<br/>
while read file; do<br/>
echo -n "mv -v $file " && echo $file | tr ? _;<br/>
done | sh
想法是找到所有文件,然后用引号将它们回显。将输出通过管道传输到 while
构造 mv
的循环对每个文件执行命令,然后将 那个 通过管道传输到一个新的 shell 中。
丑陋,但如果你不喜欢这个答案,你就不应该问这个问题。 :-)
关于linux - 递归地重命名文件并删除一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10162537/