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

# 刪除目錄下那兩個文件以外的全部文件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.htmshell

 

假設當前目錄下有 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

( 和 ) 前要加 \ , 並且兩個轉義字符先後都要有空格。
bash

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

最後一個命令,應該顯示以下:spa

正常顯示圖片

但CSDN顯示效果以下:.net

csdn顯示錯誤的圖片

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


還有一種方式以下:htm

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

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

轉自

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

相關文章
相關標籤/搜索