0

我有以下文件夹结构

.
├── 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文件?

4

1 回答 1

2

shell在将参数传递给命令(在您的情况下)*之前扩展星号()。find实际的命令看起来像

find . -iname 5.avi

您可以通过添加echo到您的命令来测试它,例如

echo find . -iname *avi

你想要做的就是*avi按原样传递给命令。为此,您必须将星号放在引号中,或使用反斜杠对其进行转义。你的命令应该是:

find . -iname '*.avi' | xargs zip videos.zip
于 2019-05-26T11:43:38.263 回答