我需要压缩大量的 pdf 和 txt 文件,但我想保持文件结构不变。目录中有很多子目录。
当我想压缩单个目录中特定类型的文件时,我运行:
for i in `find | grep -E "\.pdf$|\.txt$"`; do gzip "$i" ; done
但如果手工完成的话会花费我好几年的时间。
答案1
在顶级目录中尝试此操作。
find . -type f -mmin +1 '(' -iname '*.txt' -o -iname '*.pdf' ')' -exec gzip {} ';'
我擅自仅对超过 2 分钟的文件进行 gzip 压缩,这样它就不会触及可能正在写入的文件(mmin +1
这样做)。
答案2
我不确定为什么您现有的“命令”不起作用。但是这个脚本应该可以。在父目录中运行。
#!/bin/bash
find . -type f| while read FILE
do
if grep -E "\.pdf$|\.txt$"; then
gzip ${FILE}
fi
done