如何递归压缩仅包含文本文件的所有子目录

米库谢夫斯基

我有一个包含数据文件和分析的磁盘备份。目录结构和名称并不是真正一致的。为了节省空间,我想压缩所有仅包含数据(*.txt的子目录,然后删除原始目录。在压缩子目录上有多个线程,但是在我所处的条件下却没有。

更准确地说:我不想将所有*.txt文件压缩,而将仅包含txt文件的所有目录压缩.zip目录中,并删除原始目录。

耶利亚格雷

该脚本将存档,然后有选择地删除所有包含“ * .txt”文件且没有其他内容的文件夹。

folders=$(find . -type d -exec sh -c 'cd "$1";[ "$(ls *.txt 2>/dev/null)" ] \
          && [ -z "$(ls -ad * | grep -v '\.txt$')" ] && echo "$1"' sh {} \;)

echo "$folders" | zip -r@ archive && echo "$folders" | while read folder; do
  echo "will remove $folder"
  # Uncomment next line for the folder to be removed
  # rm -rf "$folder"
done

编辑:这是创建单个zip文件的解决方案:

find . -depth -type d -exec sh -c '
cd "$1" || exit
[ "$(ls ./*.txt 2>/dev/null)" ] &&
[ -z "$(ls -ad ./* | grep -v '\.txt$')" ] &&
(
  b=$(basename "$1")
  cd ..
  zip -r "$b.zip" "$b" && rm -rf "$b"
)' sh {} \;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何合并所有子目录中具有相同名称的文本文件?

Shell命令在所有子目录中创建文本文件

如何添加递归循环以删除包含所有子目录和文件的目录?

如何在每个子目录中创建一个文本文件,以便该文本文件包含目录名称

Python在带有子目录的目录中搜索文本文件

迭代子目录中的文本文件

从子目录打开文本文件

如何在Cmd的子目录中创建或更改文本文件?

命令行将目录(和子目录)中的所有.docx转换为文本文件并写入新文件

如何仅压缩多个子目录下的文件?

合并所有子目录中具有相同名称的文本文件,并保留其他文件(删除重复的行)

如何压缩大量子目录,并让每个 zip 文件包含 N 个子目录

如何使用Grunt压缩子文件夹/子目录中的所有JavaScript文件?

Mac:如何递归地在子目录中查找最大的文件(忽略所有目录)

如何将子目录中的所有文件递归移动到单个目录?

如何递归列出目录及其子目录中所有文件的Md5sum?

复制所有子目录的递归文件

如何在 Linux 上查找包含特定文本但不在子目录中的所有文件?

如何将每个子目录中文件的名称收集到该子目录中的文本文件中?

如何解压缩子目录中的所有文件?

如何解压缩我的子目录中的所有 zip 文件夹?

如何在所有子目录中压缩某些文件类型?

如何解压缩子目录中的所有文件

Java:如何递归获取所有子目录?

搜索包含 0 个文件的所有子目录

不包含任何文件的所有子目录的路径

如何在目录/子目录下的所有文件中搜索文本

创建单独的文本文件以列出每个目录和子目录中的内容

从目录和所有子目录获取所有文件,但不包含一个子目录