尝试找到这些文件并将它们复制到目录(test_dir);
abc-1.0.zip
kncb-1.0.zip
jenk-1.1.zip
我想动态地找到所有这些文件并将它们复制到一个目录中。我已尝试以下命令,但它仅复制最后一个文件(jenk*.zip),需要一个命令将上述所有文件复制到提到的目录(test_dir);
find / -type f -name "*abc*.zip" -o -name "*kncb*.zip" -o -name "*jenk*.zip" ! -path '*/test_dir/*.jar' -exec cp -ar {} ./test_dir \;
答案1
您需要( )
围绕您的 OR 构造应用。
可以在手册页中找到解释:
请注意,当隐式指定(例如,两个测试之间没有显式运算符)或显式指定时,-a 的优先级高于 -o。这意味着找到 . -name afile -o -name bfile -print 永远不会打印文件。
例子:
touch afile bfile
没有( )
:
find . -name afile -o -name bfile -print
./bfile
-name bfile
和之间有一个隐含的 -a -print
:
find . -name afile -o -name bfile -a -print
./bfile
( )
结果正如预期的那样:
find . \( -name afile -o -name bfile \) -print
./afile
./bfile
你的隐式-a
位于-o -name "*jenk*.zip"
和之间! -path '*/test_dir/*.jar'
。