为什么不能使用 find 和 zip 压缩所有文件?
Why cannot compress all files with find and zip?
我有以下文件夹结构
.
├── 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
只有returns5.avi
,但是如果5.avi
不存在,find
returns其余文件。
如何解决它并压缩所有 avi
个文件?
shell 在将参数传递给命令之前扩展星号 (*
)(在您的例子中是 find
)。实际命令看起来像
find . -iname 5.avi
您可以通过在命令前加上 echo
来测试它,例如
echo find . -iname *avi
您要做的是将 *avi
as-is 传递给命令。为此,您必须将星号放在引号中,或使用反斜杠将其转义。您的命令应该是:
find . -iname '*.avi' | xargs zip videos.zip
我有以下文件夹结构
.
├── 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
只有returns5.avi
,但是如果5.avi
不存在,find
returns其余文件。
如何解决它并压缩所有 avi
个文件?
shell 在将参数传递给命令之前扩展星号 (*
)(在您的例子中是 find
)。实际命令看起来像
find . -iname 5.avi
您可以通过在命令前加上 echo
来测试它,例如
echo find . -iname *avi
您要做的是将 *avi
as-is 传递给命令。为此,您必须将星号放在引号中,或使用反斜杠将其转义。您的命令应该是:
find . -iname '*.avi' | xargs zip videos.zip