如何压缩没有扩展名的文件?

如何压缩没有扩展名的文件?

我有一些目录,其中包含不同数量的文件和子目录。所有没有扩展名的文件都必须tar编辑。它们的名称可能会更改,因此无法对其进行硬编码。子目录还可能包含不相关的、不应包含在存档中的未指定数量的文件和子目录。

我希望能够用一行来完成此操作,而不使用任何.sh脚本,以便可以尽可能方便地重现此过程。


示例目录结构:

$ ls -1F

bar-dir/
bar.with.dots
foo-directory/
foo-no-ext
quux.dir/
quux.ext

结果tar应该只包含foo-no-ext这种情况。


到目前为止我想到的最接近的答案是

tar -cf archive.tar --exclude=*.* --no-recursion *

但是,当在样本集上执行时,archive.tar仍然包含子目录(即使是空的):

$ tar -tf archive.tar

bar-dir/
foo-directory/
foo-no-ext

答案1

此命令执行您想要的操作:

 find * -maxdepth 0 -type f | tar -cf archive.tar --exclude=*.* -T -

find命令仅查找*当前目录中的-maxdepth 0所有文件-type f(不是目录、设备或其他特殊文件)。结果文件将传递给 tar,以排除名称中包含点的文件。

答案2

怎么样:

tar -cf archive.tar `ls|grep "^[^.]*$"`

它对 shell 的要求不高,但是假设 grep 存在(我从未见过没有 grep 的系统)。

相关内容