【问题标题】:bash script to zip multiple subfolders in a directorybash脚本压缩目录中的多个子文件夹
【发布时间】:2021-10-13 12:29:08
【问题描述】:

我需要找到带有模式的相应子文件夹,并分别对每个子文件夹进行 gzip。我已经完成了第一站,但不确定如何压缩它们

$ find . \( -iname 'NE*' -type d \)
./NE1
./NE2
./NE3

我试过了,但我不认为我做对了吗?

 find . \( -iname 'NE*' -type d \) -exec tar -czvf NE*.tar.gz --verbose {} \;

【问题讨论】:

  • 为什么要在文件名中使用星号?
  • 顺便说一句,--verbose 之前缺少一个空格。
  • 我正在搜索前缀为 NE 的文件夹
  • 它不会压缩每个文件夹
  • 您的意思是:tar -czvf '{}'.tar.gz

标签: bash gzip tar


【解决方案1】:

试试这个:

find . \( -iname 'NE*' -type d \) -exec bash -c 'tar -czvf "$1.tar.gz" --verbose "$1" && rm -rf "$1"' - {} \;

【讨论】:

  • 非常感谢。压缩文件夹后,是否可以选择在成功压缩/压缩后删除文件夹?
  • @nick 答案已更新
  • 谢谢@philippe。正是我需要的。非常感谢
【解决方案2】:

另一个选项(也许它更易读)是使用xargs

find . -iname 'NE*' -type d | xargs -I subdir -- tar -cvzf subdir.tar.gz subdir

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多