我具有以下文件夹结构
.
├── 5.avi
├── a
│ ├── 1.avi
│ ├── b
│ │ └── 2.avi
│ └── c
│ └── 3.avi
└── b
├── 4.avi
├── l
└── s
我正在使用以下命令压缩所有avi
文件:
find . -iname *avi | xargs zip videos.zip
问题在于find
仅返回5.avi
,但是如果5.avi
不存在,则find
返回其余文件。
如何解决它并包含所有avi
文件?
答案 0 :(得分:2)
在将参数传递给命令(在您的情况下为*
)之前,外壳程序会展开星号(find
)。实际的命令看起来像
find . -iname 5.avi
您可以通过在命令前加上echo
来进行测试,例如
echo find . -iname *avi
您想要做的就是将*avi
原样传递给命令。为此,必须将星号放在引号中,或使用反斜杠将其转义。您的命令应为:
find . -iname '*.avi' | xargs zip videos.zip