一 查找文件移动到指定目录
[root@localhost jacky]# pwd /home/test/tmp/jacky [root@localhost jacky]# ls file1 file2 file3 [root@localhost jacky]# ls .. jacky [root@localhost jacky]# find . -name "file*" -exec mv {} .. \; [root@localhost jacky]# ls [root@localhost jacky]# ls .. file1 file2 file3 jacky [root@localhost jacky]# |
二 同MV一样,也可以用exec选项执行cp命令,如下:
root@localhost jacky]# pwd /home/test/tmp/jacky [root@localhost jacky]# ls file1 file2 file3 [root@localhost jacky]# ls .. jacky [root@localhost jacky]# find . -name "file*" -exec cp {} .. \; [root@localhost jacky]# ls file1 file2 file3 [root@localhost jacky]# ls .. file1 file2 file3 jacky [root@localhost jacky]# |
三 使用xargs执行cp
root@localhost jacky]# ls file1 file2 file3 [root@localhost jacky]# find . -name "file*" | xargs -i cp {} {}.bak [root@localhost jacky]# ls file1 file1.bak file2 file2.bak file3 file3.bak [root@localhost jacky]# |
四 使用xargs执行mv
[root@localhost jacky]# pwd [root@localhost jacky]# find . -name "file*" | xargs -i mv {} .. |
五 find后执行xargs提示xargs: argument line too long解决方法:
find . -type f -atime +20 -print0 | xargs -0 -l1 -t rm -f |
-l1是一次处理一个
-t是处理之前打印出命令
六 xargs选项的其他用法
[root@localhost jacky]# pwd /home/test/tmp/jacky [root@localhost jacky]# ls file1 file2 file3 [root@localhost jacky]# ls .. jacky [root@localhost jacky]# find . -name "file*" | xargs -I [] cp [] .. [root@localhost jacky]# ls .. file1 file2 file3 jacky |
使用-i参数默认的前面输出用{}代替,-I参数可以指定其他代替字符,如例子中的[]
七 xargs的-p参数的使用
[root@localhost jacky]# pwd /home/test/tmp/jacky [root@localhost jacky]# ls file1 file2 file3 [root@localhost jacky]# ls .. jacky [root@localhost jacky]# find . -name "file*" | xargs -p -i mv {} .. mv ./file3 .. ?...y mv ./file1 .. ?...y mv ./file2 .. ?...n [root@localhost jacky]# ls file2 [root@localhost jacky]# ls .. file1 file3 jacky |
-p参数会提示让你确认是否执行后面的命令,y执行,n不执行。