我在一个复杂的文件夹结构中有成千上万的mp3,它位于一个文件夹中.我想把所有的mp3都移到一个没有子文件夹的目录中.我可以想到使用find命令执行此操作的各种方法,但一个问题是重复的文件名.我不想替换文件,因为我经常有同一首歌的多个版本.自动重命名是最好的.我真的不在乎如何重命名文件.
有谁知道一个简单而安全的方法吗?
您可以在复制后更改a/b/c.mp3路径a - b - c.mp3.这是Bash的解决方案:
find srcdir -name '*.mp3' -printf '%P\n' |
while read i; do
j="${i//\// - }"
cp -v "srcdir/$i" "dstdir/$j"
done
在没有${//}替换的shell中:
find srcdir -name '*.mp3' -printf '%P\n' |
sed -e 'p;s:/: - :g' |
while read i; do
read j
cp -v "srcdir/$i" "dstdir/$j"
done
对于不同的方案,GNU的cp和mv可以做的,而不是覆盖编号备份-见-b/ --backup[=CONTROL]在手册页.
find srcdir -name '*.mp3' -exec cp -v --backup=numbered {} dstdir/ \;