linux 如何刪除文件夾下面的文件和文件夾,只保留兩個文件


# 刪除目錄下那兩個文件之外的所有文件

find  dir / - type  f ! -name file1 -a ! -name file2 |  xargs  rm  -f
 
# 刪除所有空目錄(非空目錄不會被刪除,但是會出錯誤信息,可以忽略)
find  dir / - type  d |  xargs  rmdir  -p
 

使用bash shell刪除目錄中的特定文件的3種方法_linux shell_腳本之家
http://www.jb51.net/article/51575.htm

 

假設當前目錄下有 a,b,c 三個目錄,里面都有一個 s.txt 文件。
[caz28]~/temp$find .  -type f -name s.txt -print
./b/s.txt
./c/s.txt
./a/s.txt
要忽略 a 目錄:
[caz28]~/temp$find . -path ./a -prune -o -type f -name s.txt -print
./b/s.txt
./c/s.txt

./a 不能寫成 ./a/, 否則沒有作用。-o 是 -or 的意思,也必須加。
要忽略 a,b 兩個目錄:
[caz28]~/temp$find . path./aopath./b -prune -o -type f -name s.txt -print
./c/s.txt

( 和 ) 前要加 \ , 而且兩個轉義字符前后都要有空格。

路徑名和文件名,如果有空格,必須用雙引號括起來。

最后一個命令,應該顯示如下:

正常顯示圖片

但CSDN顯示效果如下:

csdn顯示錯誤的圖片

把括號顯示沒了,應該是CSDN blog系統的bug。


還有一種方式如下:

[caz28]~/temp$find . -type f -name s.txt ! -path ./a/* ! -path ./b/*
./c/s.txt

注意空格,還有path里是有星號的。這個效率應該不如上面。

轉自

find 命令查找文件時忽略某些目錄 - CSDN博客 http://blog.csdn.net/caz28/article/details/50985844


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM