命令
find -maxdepth 1 \! -name example \! -name h2_hf \! -name . -exec mv {} example \;
- -maxdepth 搜索文件夹的最大深度,值为1则仅搜索当前目录下的文件夹,不去搜索子文件夹
\!
这里面!
表示搜索除了后面-name指定的文件/目录名之外的文件/目录,\
表示对!
的转义- -name指定文件名`
- exec 是find命令的一个选项,表示执行后面的shell命令,以
;
结尾。其中\;
里面的\
同样表示对;
的转义 - {}表示
exec
命令前面的find
命令执行的结果。exec
命令会将{}
代表的内容作为命令参数集,并且对每一个参数单独执行一次exec
后面的命令。
注意
1.exec
和使用管道|
以及使用管道加xargs
(即| xargs
)有类似的用途,都可以根据前面命令的结果继续执行下面的命令,但是三者有着很大的区别,具体参考shell之xargs与-exec,与管道的区别。现简单表示为以下:
- 使用管道
| command
,将管道前的命令结果,以标准输入
的形式,传递给后面的命令,仅执行一次命令。相当于在输入command,回车后,从键盘上输入管道前命令运行的结果
; - 使用
| xargs
,将管道前的命令结果,以命令参数
的形式,传递给xargs后面的命令,仅执行一次命令,同时输入所有命令参数。相当于在输入command + 所有命令参数(管道前命令运行的结果),回车运行
; - 使用
exec
,相当于将管道前命令运行的结果,以命令参数
的形式,传递给exec后面的命令,执行多次命令,每次命令输入一个参数。相当于在输入command + 一个有命令参数(管道前命令运行的结果),回车运行;再继续同样的命令和下一个命令参数。