linux下find命令之-exec ll -sh {} \;
exec解釋:
-exec??參數(shù)后面跟的是command命令,它的終止是以;為結(jié)束標(biāo)志的,所以這句命令后面的分號(hào)是不可缺少的,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義,所以前面加反斜杠。
{}???花括號(hào)代表前面find查找出來的文件名。
使用find時(shí),只要把想要的操作寫在一個(gè)文件里,就可以用exec來配合find查找,很方便的。在有些操作系統(tǒng)中只允許-exec選項(xiàng)執(zhí)行諸如l?s或ls?-l這樣的命令。大多數(shù)用戶使用這一選項(xiàng)是為了查找舊文件并刪除它們。建議在真正執(zhí)行rm命令刪除文件之前,最好先用ls命令看一下,確認(rèn)它們是所要?jiǎng)h除的文件。?exec選項(xiàng)后面跟隨著所要執(zhí)行的命令或腳本,然后是一對(duì)兒{?},一個(gè)空格和一個(gè)\,最后是一個(gè)分號(hào)。為了使用exec選項(xiàng),必須要同時(shí)使用print選項(xiàng)。如果驗(yàn)證一下find命令,會(huì)發(fā)現(xiàn)該命令只輸出從當(dāng)前路徑起的相對(duì)路徑及文件名。
實(shí)例1:ls?-l命令放在find命令的-exec選項(xiàng)中?
命令:
find?.?-type?f?-exec?ls?-l?{}?\;
輸出:?
[root@localhost?test]#?find?.?-type?f?-exec?ls?-l?{}?\;?
-rw-r--r--?1?root?root?127?10-28?16:51?./log2014.log
-rw-r--r--?1?root?root?0?10-28?14:47?./test4/log3-2.log
-rw-r--r--?1?root?root?0?10-28?14:47?./test4/log3-3.log
-rw-r--r--?1?root?root?0?10-28?14:47?./test4/log3-1.log
-rw-r--r--?1?root?root?33?10-28?16:54?./log2013.log
-rw-r--r--?1?root?root?302108?11-03?06:19?./log2012.log
-rw-r--r--?1?root?root?25?10-28?17:02?./log.log
-rw-r--r--?1?root?root?37?10-28?17:07?./log.txt
-rw-r--r--?1?root?root?0?10-28?14:47?./test3/log3-2.log
-rw-r--r--?1?root?root?0?10-28?14:47?./test3/log3-3.log
-rw-r--r--?1?root?root?0?10-28?14:47?./test3/log3-1.log
[root@localhost?test]#
說明:?
上面的例子中,find命令匹配到了當(dāng)前目錄下的所有普通文件,并在-exec選項(xiàng)中使用ls?-l命令將它們列出。
實(shí)例2:在目錄中查找更改時(shí)間在n日以前的文件并刪除它們
命令:
find?.?-type?f?-mtime?+14?-exec?rm?{}?\;?
輸出:
[root@localhost?test]#?ll
總計(jì)?328
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
-rw-r--r--?1?root?root?????33?10-28?16:54?log2013.log
-rw-r--r--?1?root?root????127?10-28?16:51?log2014.log
lrwxrwxrwx?1?root?root??????7?10-28?15:18?log_link.log?->?log.log
-rw-r--r--?1?root?root?????25?10-28?17:02?log.log
-rw-r--r--?1?root?root?????37?10-28?17:07?log.txt
drwxr-xr-x?6?root?root???4096?10-27?01:58?scf
drwxrwxrwx?2?root?root???4096?10-28?14:47?test3
drwxrwxrwx?2?root?root???4096?10-28?14:47?test4
[root@localhost?test]#?find?.?-type?f?-mtime?+14?-exec?rm?{}?\;
[root@localhost?test]#?ll
總計(jì)?312
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
lrwxrwxrwx?1?root?root??????7?10-28?15:18?log_link.log?->?log.log
drwxr-xr-x?6?root?root???4096?10-27?01:58?scf
drwxrwxrwx?2?root?root???4096?11-12?19:32?test3
drwxrwxrwx?2?root?root???4096?11-12?19:32?test4
說明:
在shell中用任何方式刪除文件之前,應(yīng)當(dāng)先查看相應(yīng)的文件,一定要小心!當(dāng)使用諸如mv或rm命令時(shí),可以使用-exec選項(xiàng)的安全模式。它將在對(duì)每個(gè)匹配到的文件進(jìn)行操作之前提示你。?
實(shí)例3:在目錄中查找更改時(shí)間在n日以前的文件并刪除它們,在刪除之前先給出提示
命令:
find?.?-name?"*.log"?-mtime?+5?-ok?rm?{}?\;
輸出:
[root@localhost?test]#?ll
總計(jì)?312
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
lrwxrwxrwx?1?root?root??????7?10-28?15:18?log_link.log?->?log.log
drwxr-xr-x?6?root?root???4096?10-27?01:58?scf
drwxrwxrwx?2?root?root???4096?11-12?19:32?test3
drwxrwxrwx?2?root?root???4096?11-12?19:32?test4
[root@localhost?test]#?find?.?-name?"*.log"?-mtime?+5?-ok?rm?{}?\;
<?rm?...?./log_link.log?>???y
<?rm?...?./log2012.log?>???n
[root@localhost?test]#?ll
總計(jì)?312
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
drwxr-xr-x?6?root?root???4096?10-27?01:58?scf
drwxrwxrwx?2?root?root???4096?11-12?19:32?test3
drwxrwxrwx?2?root?root???4096?11-12?19:32?test4
[root@localhost?test]#
說明:
在上面的例子中,?find命令在當(dāng)前目錄中查找所有文件名以.log結(jié)尾、更改時(shí)間在5日以上的文件,并刪除它們,只不過在刪除之前先給出提示。?按y鍵刪除文件,按n鍵不刪除。?
?
實(shí)例4:-exec中使用grep命令
命令:
find?/etc?-name?"passwd*"?-exec?grep?"root"?{}?\;
輸出:
[root@localhost?test]#?find?/etc?-name?"passwd*"?-exec?grep?"root"?{}?\;
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
[root@localhost?test]#
說明:
任何形式的命令都可以在-exec選項(xiàng)中使用。??在上面的例子中我們使用grep命令。find命令首先匹配所有文件名為“?passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后執(zhí)行g(shù)rep命令看看在這些文件中是否存在一個(gè)root用戶。
實(shí)例5:查找文件移動(dòng)到指定目錄??
命令:
find?.?-name?"*.log"?-exec?mv?{}?..?\;
輸出:
[root@localhost?test]#?ll
總計(jì)?12drwxr-xr-x?6?root?root?4096?10-27?01:58?scf
drwxrwxr-x?2?root?root?4096?11-12?22:49?test3
drwxrwxr-x?2?root?root?4096?11-12?19:32?test4
[root@localhost?test]#?cd?test3/
[root@localhost?test3]#?ll
總計(jì)?304
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
-rw-r--r--?1?root?root?????61?11-12?22:44?log2013.log
-rw-r--r--?1?root?root??????0?11-12?22:25?log2014.log
[root@localhost?test3]#?find?.?-name?"*.log"?-exec?mv?{}?..?\;
[root@localhost?test3]#?ll
總計(jì)?0[root@localhost?test3]#?cd?..
[root@localhost?test]#?ll
總計(jì)?316
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
-rw-r--r--?1?root?root?????61?11-12?22:44?log2013.log
-rw-r--r--?1?root?root??????0?11-12?22:25?log2014.log
drwxr-xr-x?6?root?root???4096?10-27?01:58?scf
drwxrwxr-x?2?root?root???4096?11-12?22:50?test3
drwxrwxr-x?2?root?root???4096?11-12?19:32?test4
[root@localhost?test]#
實(shí)例6:用exec選項(xiàng)執(zhí)行cp命令??
命令:
find?.?-name?"*.log"?-exec?cp?{}?test3?\;
輸出:
[root@localhost?test3]#?ll
總計(jì)?0[root@localhost?test3]#?cd?..
[root@localhost?test]#?ll
總計(jì)?316
-rw-r--r--?1?root?root?302108?11-03?06:19?log2012.log
-rw-r--r--?1?root?root?????61?11-12?22:44?log2013.log
-rw-r--r--?1?root?root??????0?11-12?22:25?log2014.log
drwxr-xr-x?6?root?root???4096?10-27?01:58?scf
drwxrwxr-x?2?root?root???4096?11-12?22:50?test3
drwxrwxr-x?2?root?root???4096?11-12?19:32?test4
[root@localhost?test]#?find?.?-name?"*.log"?-exec?cp?{}?test3?\;
cp:?“./test3/log2014.log”?及?“test3/log2014.log”?為同一文件
cp:?“./test3/log2013.log”?及?“test3/log2013.log”?為同一文件
cp:?“./test3/log2012.log”?及?“test3/log2012.log”?為同一文件
[root@localhost?test]#?cd?test3
[root@localhost?test3]#?ll
總計(jì)?304
-rw-r--r--?1?root?root?302108?11-12?22:54?log2012.log
-rw-r--r--?1?root?root?????61?11-12?22:54?log2013.log
-rw-r--r--?1?root?root??????0?11-12?22:54?log2014.log
轉(zhuǎn)載于:https://blog.51cto.com/925370765/1763404
總結(jié)
以上是生活随笔為你收集整理的linux下find命令之-exec ll -sh {} \;的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ppb是什么意思(ppb单位换算)
- 下一篇: linux命令学习记录一