BASH/Linux - 需要一个命令来递归压缩多级目录中的特定文件类型

BASH/Linux - 需要一个命令来递归压缩多级目录中的特定文件类型

我需要压缩大量的 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

相关内容