美好的一天。
在一个很好的脚本中我有以下find命令:
find -maxdepth 1 \! -type d -name "some_file_name_*" -name "*.txt" -name "*_${day_month}_*" -exec cp {} /FILES/directory1/directory2/directory3/ +
如果命令找不到任何内容,我想知道如何停止脚本。
答案 0 :(得分:1)
将GNU xargs
与-r
开关和管道一起使用,以确保find
的输出仅在其非空时传递给cp
。
find -maxdepth 1 \! -type d -name "some_file_name_*" -name "*.txt" -name "*_${day_month}_*" \
| xargs -r I{} cp "{}" /FILES/directory1/directory2/directory3/
I{}
是find
命令输出的占位符,传递给cp
,
根据-r
页面,I{}
和man xargs
代表以下内容,
-r, --no-run-if-empty
If the standard input does not contain any nonblanks, do not run
the command. Normally, the command is run once even if there is
no input. This option is a GNU extension.
-I replace-str
Replace occurrences of replace-str in the initial-arguments with
names read from standard input.
答案 1 :(得分:1)
您可以添加-exec false {}
,以便在找到某些内容时获得错误的退出状态(这会使其有点颠倒)
if find . -name foo -exec echo ok ';' -exec false {} +
then
echo 'not found'
exit
fi
echo found
在stackexchange中查看类似问题:How to detect whether “find” found any matches?,特别是this answer,其中提出了false
技巧