如何压缩和重命名目录树


1

我在很多目录中都有很多音乐:

./artist1/album1/*.mp3
./artist1/album2/*.mp3
./artist1/album3/*.mp3
./artist2/album1/*.mp3
./artist2/album2/*.mp3
./artist3/album1/*.mp3
./artist3/album2/*.mp3
... ...

我如何将它们压缩到此位置:

./artist1/album1/*.mp3  => ./artist1-album1.tar.gz
./artist1/album2/*.mp3  => ./artist1-album2.tar.gz
./artist1/album3/*.mp3  => ./artist1-album3.tar.gz
./artist2/album1/*.mp3  => ./artist2-album1.tar.gz
./artist2/album2/*.mp3  => ./artist2-album2.tar.gz
./artist3/album1/*.mp3  => ./artist3-album1.tar.gz
./artist3/album2/*.mp3  => ./artist3-album2.tar.gz
... ...

我想要单行命令或简单的脚本。


1
您要ZIP还是TAR和GZIP?
akira 2010年

Answers:


2

tar

for dir in */*/; do dir=${dir%/}; tar cf "${dir//\//-}.tar" "$dir"; done

zip

for dir in */*/; do dir=${dir%/}; zip -0r "${dir//\//-}.zip" "$dir"; done

MP3文件包含已压缩的数据,无法进一步压缩-您将获得的最佳压缩率约为2%,并且速度会慢很多倍-因此第一个示例只是tar存档。

如果您仍需要Gzip压缩,请添加一个z选项(如中所述tar czf)并替换.tar.tar.gz。同样,-0选项zip禁用压缩-改变-0r-r重新启用。


${dir%/}/从中删除结尾$dir

${dir//\//-}全部替换/-


1
+1也表示mp3已被压缩。
凯兹(Kez)2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.