我的目录中有很多文件。我想列出、复制或移动名称中包含“abc”和“xyz”的文件。如何使用 AND 进行模式匹配?
普通命令:ls *abc* *xyz*
仅与 OR 一起使用。
答案1
用这个方法。
ls *abc*xyz* *xyz*abc*
使用 inmv
或cp
,您只需要使用选项指定目标目录,-t
因为您正在使用通配符查找文件,并且可以不仅仅是要复制/移动的文件:
cp -t /path/to/dest *abc*xyz* *xyz*abc*
或者使用find
类似:
find \( -name '*abc*' -a -name '*xyz*' \)
这find -name '*abc*' -name '*xyz*'
与中记录的相同man find
:
表达式1 表达式2
一行中的两个表达式被视为用隐含的“and”连接;表达式2不评估如果表达式1是假的。表达式1-A表达式2
与...一样表达式1 表达式2。表达式1-和表达式2
与...一样表达式1 表达式2,但不符合 POSIX 标准。
您可以添加-exec ...
到上面的命令中,以对找到的文件执行任何您想要执行的操作。
find \( -name '*abc*' -a -name '*xyz*' \) -exec do-stuffs {} +