如何压缩目录中特定类型的文件

如何压缩目录中特定类型的文件

我在一个目录中有三种文件,例如。TXT,.csv以及没有扩展名的文件。

例子

test
nest
prod
test.csv
prod.txt
nest.csv

我想压缩没有扩展名的文件并将该 zip 移动到另一个目录。请帮我解决这个问题

答案1

使用柏油公用事业:

tar -cvf noext.zip --exclude=*.* * && mv noext.zip path/to/dest_dir

  • -c- 创建一个新的存档

  • --exclude=*.*- 排除文件基于图案

  • mv noext.zip path/to/dest_dir- 将创建的存档移动到目的地目录

答案2

您可以在具有匹配包含点字符的名称的全局模式的字段find上使用反转条件,如下所示-name

find . -type f ! -name "*.*" -exec zip filename.zip "{}" + 
[ -f filename.zip ] && mv filename.zip /to_whatever_path_needed/

表达式获取所有文件不是他们的名字中包含一个.字符,并将其一次性传递给 zip 以创建.zip存档。

您可能必须添加深度选项,find就好像-mindepth 1 -maxdepth 1您想找到文件一样仅有的在您当前的目录中。

答案3

以克什为单位:

zip /another/directory/files_without_extension.zip !(*.*)

在 bash 中,运行shopt -s extglob上面的命令。在 zsh 中,运行setopt ksh_glob上面的命令,或者

setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*

相关内容