国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux中ls與rm刪除文件的問題分析

2024-08-27 23:58:44
字體:
來源:轉載
供稿:網友

在linux中ls與rm命令都比較常用了,今天小編在使用ls配合rm刪除文件時碰到一些小問題,下面我們來看看問題解決方案,通常ls列出的文件,想直接管道通過rm -rf刪除是無效的.這時就要配合命令xargs使用了.

例如:ls -t|tail -10|xargs rm -rf    //按時間排序,刪除最后的10個文件

當然,也可以用ls -lt|tail -100|awk '{ print $9 }'|xargs rm -rf  兩者效果是相同的同理,如果想按時間倒序排列,也就是說離現在最近的時間越排在最后顯示,就用ls -rt當然,也可以使用find 配合rm刪除,也可以用下面的語句清空內容.

  1. #!/bin/bash 
  2. for i in `ls test.log.??` ;do 
  3. echo "">$i 
  4. done 

當然,如果是多個目錄下面,再清除文件,也是可以的,只不過多了一層嵌套而憶,我的目錄結構如下:

  1. [root@web tomcat]# ll 
  2. --總計 260 
  3. drwxr-xr-x 2 www www 20480 12-28 09:23 bbs 
  4. drwxr-xr-x 2 www www 16384 12-28 00:00 comment 
  5. drwxr-xr-x 2 www www 36864 12-28 03:50 enterprise 
  6. drwxr-xr-x 2 www www 24576 12-28 00:00 expert 
  7. drwxr-xr-x 2 www www 36864 12-28 00:02 feedback 
  8. drwxr-xr-x 2 www www 36864 11-15 12:30 generator 
  9. drwxr-xr-x 2 www www 24576 12-28 00:02 passport 
  10. drwxr-xr-x 2 www www 20480 12-28 00:00 search 
  11. drwxr-xr-x 2 www www 20480 12-28 09:35 usercenter 
  12. [root@web comment]# ll 
  13. ---總計 936 
  14. -rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-24.log 
  15. -rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-25.log 
  16. -rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-26.log 
  17. -rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-27.log 
  18. -rw-r--r-- 1 www www   34155 12-28 10:01 catalina.out 
  19. -rw-rw-r-- 1 www www       2 12-28 09:57 localhost.2012-12-14.log 
  20. -rw-rw-r-- 1 www www       2 12-28 09:57 localhost.2012-12-17.log 
  21. -rw-rw-r-- 1 www www       2 12-28 09:57 localhost_access_log.2012-12-25.txt --Vevb.com 
  22. -rw-rw-r-- 1 www www       2 12-28 09:57 localhost_access_log.2012-12-26.txt 
  23. -rw-rw-r-- 1 www www  629729 12-28 09:57 localhost_access_log.2012-12-27.txt 

如果想清空以上所有目錄里的所有文件,就可以這樣做:

for i in `ls`;do (cd $i ;for m in `ls`;do echo " ">$m;done);done

注:上面的圓括號是不能少的.

而如果想要清空一個文件的內容,再使用xargs配合echo "">file,發現確不能正常生效,如:find . -name "test.*" |xargs echo ""> 因為,find和echo的不是這樣配合使用的,其兩者簡單配合有另外一個妙用:

find . -name "file*" -print | xargs echo "" > /tmp/find.log

該語句的作用,是將當前目錄下,所有以file開頭的文件查找到,并將其相對路徑及名稱輸入到find.log文件中,輸入方式為每行一個,對符合條件的原文件不會做任何改變.

而如果想實現find查找并清空文件,難道我們就沒辦法了嗎?很顯然,這是不可能的,菜鳥們的辦法是:

  1. #!/bin/bash 
  2. for i in `find ./server* -name "test.log" ` 
  3. do 
  4. cat /dev/null > $i 
  5. done 

高手顯然不屑于使用這么長的語句,高手們的辦法是:

[root@localhost log]# find . -name "maillog*" |awk '{ print "echo>"$0}'|bash

或者把索性把echo也去掉.

[root@localhost log]# find . -name "maillog*" |awk '{ print ">"$0}'|bash

該語句是如何變化為來的得呢?

  1. [root@localhost log]# find . -name "maillog*"|xargs -i ls -l {} 
  2. -rw------- 1 root root 0 11-09 05:06 ./maillog 
  3. -rw------- 1 root root 0 11-09 05:06 ./maillog.1 

以上為找出所有文件,而再利用強大的awk,可以將所有輸出的文件前加 echo ""> 以bash語句的方式出現.

  1. [root@localhost log]# find . -name "maillog*"|awk '{print "echo > "$0}' 
  2. echo > ./maillog 
  3. echo > ./maillog.1 

find命令配合rm刪除某天前的文件.

例1:將/usr/local/backups目錄下所有10天前帶"."的文件刪除

find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \;

find:linux的查找命令,用戶查找指定條件的文件.

/usr/local/backups:想要進行清理的任意目錄

-mtime:標準語句寫法

+10:查找10天前的文件,這里用數字代表天數,+30表示查找30天前的文件.

"*.*":希望查找的數據類型,"*.jpg"表示查找擴展名為jpg的所有文件,"*"表示查找所有文件,這個可以靈活運用,舉一反三.

-exec:固定寫法

rm -rf:強制刪除文件,包括目錄

{} \;:固定寫法,一對大括號+空格+\

find $1 -name "*.html" -mtime +1 -print0 |xargs -0 rm -v

注:我上面的例子,只是列了一層目錄,而find查找時,是會將其下面的子目錄內符合條件的語句也會包含進來.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲麻莱县| 读书| 定襄县| 马龙县| 扎兰屯市| 白山市| 浦城县| 景泰县| 吉木萨尔县| 浑源县| 开远市| 白河县| 莱西市| 石楼县| 濮阳市| 靖西县| 北京市| 敦化市| 芦山县| 金川县| 靖安县| 鹤岗市| 固阳县| 云阳县| 靖安县| 武功县| 信宜市| 潜江市| 大兴区| 郯城县| 新营市| 日照市| 贡嘎县| 永吉县| 栖霞市| 泉州市| 九台市| 改则县| 花垣县| 无为县| 房山区|