本篇向大家分享一个linux应用的案例。要求是这样的:
/a 目录下面的内容
/a/login1.txt
/a/login2.txt
/a/login3.txt
/a/login4.txt
/a/b/login5.txt
/a/b/login6.txt
我们将/a 目录下面的所有以login开头的文件名找出来拷贝到目录/login 下。
利用find命令就可以很好的解决这个问题,其使用方式有两个。
第一 利用find命令的选项-exec来执行相应的命令
# find /a –name login* -exec cp {} /b \;
{} 表示的是由find找到的内容
-exec 是find命令额外动作的开始; \;表示的是额外动作的结束。-exec和\;中间的部分就是额外动作执行的命令。
第二 利用管道(|) 和 xargs 命令
# find /a –name login* | xargs cp –t /b
xargs 读取find的结果作为cp的输入数据。这里需要注意的是cp命令一定要加-t选项。因为-t选项后面跟着的目录是目标目录。如果不加-t的话-b会被认为是源目录,而xargs读入的文件成了目标目录。这样是会报错误的。
上面两种方式都可以解决我们的需求。希望本文对大家有所帮助。