2012-01-01 71 views
-1

說有一個目錄結構,如刪除文件?在這個例子中,將刪除2個文件(other.dat,myfile.txt的)UNIX只能從目錄

我已經從「midlev」目錄中嘗試下面的命令,但它給這個錯誤(find: bad option -maxdepth find: [-H | -L] path-list predicate-list):

find anotherdirec/ -type f -maxdepth 1 

我正在運行SunOS 5.10。

+0

是否要刪除隱藏的文件? (.hidden.txt) – BatchyX 2012-01-01 11:01:32

+0

@BatchyX - 不,不要刪除非隱藏文件 – toop 2012-01-01 11:04:41

+1

[man rm?](http://duckduckgo.com/?q=man+rm) – TLP 2012-01-01 13:06:37

回答

5
rm anotherdirec/* 

應該爲你工作。

+0

不會上面的命令還會刪除用戶提到的示例中的目錄'furtherdown'和'otherdirec'?我認爲你的意思是'rm anotherdirec /*.*' – peakit 2012-01-01 10:36:31

+2

不行,沒有標誌的bare'rm'不會'rmdir',因此雖然glob'anotherdirec/*'將匹配anotherdirec/futherdown,但'rm'不會刪除它。 – msw 2012-01-01 10:58:40

+0

感謝您澄清@msw! – peakit 2012-01-01 11:21:41

3

查找對選項順序很敏感。試試這個:

find anotherdirec/ -maxdepth 1 -type f -exec rm {} \; 
+0

仍然給出:「 找到:壞選項-maxdepth 找到:[-H | -L]路徑列表謂詞列表」 – toop 2012-01-01 10:51:58

+2

@Arenielle'find' has一個名爲'-delete'的選項。如果你使用它,你不需要'-exec ...'。如果你有很多文件,查找的'delete'將會更快:) – uzsolt 2012-01-01 13:31:15

+0

@toop對於SunOS 5.10,-maxdepth不是一個有效的選項。您應該查閱適用於您特定操作系統的聯機幫助頁http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?find+1 – JRFerguson 2012-01-01 13:59:19

4

羅布的回答(RM anotherdirec/*)可能會工作,但它是一個有點冗長,併產生了一堆錯誤信息。問題是您正在使用不支持-maxdepth選項的查找版本。如果你想避免的錯誤信息「RM anotherdirec/*」給,你可以這樣做:

 
for i in anotherdirec/*; do test -f $i && rm $i; done 

注意,這些方法都將工作,如果任何文件包含空格或其他特殊字符。如果這是一個問題,你可以在$ i周圍加雙引號。

1

rm toplev/midlev/anotherdirec/*如果您只想刪除文件。

rm -rf toplev/midlev/anotherdirec/*如果要刪除文件和較低的目錄