如何将名称中没有“AAA”或“BBB”的所有文件夹放入zip文件?linux

如何将名称中没有“AAA”或“BBB”的所有文件夹放入zip文件?linux,linux,zip,tar,Linux,Zip,Tar,在当前文件夹中,我有很多子文件夹,其中包含文件。如何将名称中没有AAA或BBB的文件夹放入.zip文件 123AAAcc 123.txt BBB.csv 222BBBss ... ADFAAA BBB adsf.txt vvBB 111.mov BBB.avi 我尝试了以下方法,它也排除了vvBB\BBB.avi和ADFAAA\BBB\*。我想保留这些 tar -zcvf test.tgz --exclude='*AAA*' --exclude='*BBB*'

在当前文件夹中,我有很多子文件夹,其中包含文件。如何将名称中没有AAA或BBB的文件夹放入.zip文件

123AAAcc
  123.txt
  BBB.csv
222BBBss
  ...
ADFAAA
  BBB
    adsf.txt
vvBB
  111.mov
  BBB.avi
我尝试了以下方法,它也排除了vvBB\BBB.avi和ADFAAA\BBB\*。我想保留这些

tar -zcvf test.tgz --exclude='*AAA*' --exclude='*BBB*' .
问题是,我如何能够只对级别1的子文件夹名执行-exclude操作,而对所有文件名和文件夹名执行递归操作

希望我有一个.zip文件,其中包含:

vvBB
  111.mov
  BBB.avi

我想把它作为一个命令行来实现。如何执行此操作?

您可以通过将以下命令链接在一起来完成此操作:

ls将列出当前目录中的所有文件和文件夹

grep-v\.*BBB.\\\\\.*AAA.*\查找所有带有AAA或BBB且被任何内容包围的名称,然后使用-v将其排除并返回所有其他结果

xargs tar-cvzf test.tgz将从管道中获取参数并将其应用于tar。总之,您可以得到:

ls | grep -v "\(.*BBB.*\)\|\(.*AAA.*\)" | xargs tar -cvzf test.tgz
我得到的部分结果是:

$ ls
123AAAcc
222BBBss
ADFAAA
vvBB
$ ls | grep -v "\(.*BBB.*\)\|\(.*AAA.*\)"
vvBB
$ ls | grep -v "\(.*BBB.*\)\|\(.*AAA.*\)" | xargs tar -cvzf test.tgz
a vvBB
a vvBB/111.mov
a vvBB/BBB.avi