我在一个目录中有三种文件,例如。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 ^*.*