gpt4 book ai didi

linux - 解压终端所有子目录下的所有gz文件

转载 作者:可可西里 更新时间:2023-11-01 11:48:30 26 4
gpt4 key购买 nike

有没有办法解压包含 zip 文件的文件夹中的所有 gz 文件。当 zip 文件位于子目录中时。查询

find -type f -name "*.gz"

给出这样的结果:

./datasets/auto/auto.csv.gz
./datasets/prnn_synth/prnn_synth.csv.gz
./datasets/sleep/sleep.csv.gz
./datasets/mfeat-zernike/mfeat-zernike.csv.gz
./datasets/sonar/sonar.csv.gz
./datasets/wine-quality-white/wine-quality-white.csv.gz
./datasets/ring/ring.csv.gz
./datasets/diabetes/diabetes.csv.g

最佳答案

如果你想对它们中的每一个启动“gzip -d”:

cd theparentdir && gzip -d $(find ./ -type f -name '*.gz')

然后,将它们 gzip 回来:

cd theparentdir && gzip $(find ./ -type f -name '*.csv')

但是在很多情况下这会窒息

  • 如果文件名中有一些特殊字符(空格、制表符、换行符等)
  • 其他类似案例
  • 或者如果有太多的文件要放在 gzip 命令之后!

如果你有 GNU find,一个解决方案是:

查找...-print0 | xarsg -0 gzip -d # 对于 gunzip 压缩包,但仍然对其中包含“换行符”的文件感到窒息

另一个(可以说是更好的?)解决方案,如果您有 GNU find 供您使用:

cd theparentdir && find ./ -type f -name '*.gz' -exec gzip -d '{}' '+'

并重新压缩该父目录和所有子目录中的所有 csv:

cd theparentdir && find ./ -type f -name '*.csv' -exec gzip '{}' '+'

“+”告诉 GNU find 尝试在每次 gzip 调用时尽可能多地放置找到的文件(而不是每个文件执行 1 个 gzip incocation,非常非常资源密集且非常低效和缓慢),类似于 xargs,但是有一些好处(只有 1 个命令,不需要管道)

关于linux - 解压终端所有子目录下的所有gz文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com