我需要放置一個命令來搜索當前目錄及其子目錄中的所有文件 - 以〜結尾,和/或所有以開頭或結尾的文件#。命令行將顯示並清除所有找到的文件。只允許使用一個命令:no';'或'& &'或其他惡作劇。unix在終端中查找命令不起作用
這裏是我的命令:
find . -name "#*" -o -name "*#" -o -name "*~" -print -delete
但只擦除與xargs -0''
這樣的結合在〜
我需要放置一個命令來搜索當前目錄及其子目錄中的所有文件 - 以〜結尾,和/或所有以開頭或結尾的文件#。命令行將顯示並清除所有找到的文件。只允許使用一個命令:no';'或'& &'或其他惡作劇。unix在終端中查找命令不起作用
這裏是我的命令:
find . -name "#*" -o -name "*#" -o -name "*~" -print -delete
但只擦除與xargs -0''
這樣的結合在〜
您忘記附上括號()
的條件。這意味着只有最後一個條件纔會觸發動作-print
和-delete
。
默認值是-a
,這不需要括號,這就是爲什麼大多數查找命令如find -type f -name "pattern" -print
沒有圓括號的原因。
你應該嘗試:
find . \(-name "#*" -o -name "*#" -o -name "*~" \) -print -delete
如何-print0
主結尾的文件。
find . -type f -print0 | xargs -0 rm
za:temp za$ ls
file.txt file.txt~
za:temp za$ find . -name "*~" -print0 | xargs -0 rm
za:temp za$ ls
file.txt
或與xargs -I {}
加上你的同樣做同樣的事情。
# xargs -I {} to capture the value of find
find . -iname *something* | xargs -I {} rm {}
編輯:如果你不能看到與#中使用find .
啓動文件,然後將這些文件有文件(S),如#file.txt
的名稱中的空格。您需要找到空間類似find . -name "* *"
的文件,然後刪除空格。
嘗試單引號代替雙引號的名稱通配符。有些shell會用雙引號爲你做插值,就像perl和php用字符串做的一樣。 – alzee
我很確定這不是問題。我在這裏看到同樣的問題(使用GNU find 4.4.2)。我不知道問題是什麼。 –
您忘記將條件放在parens'()'中。因此只有最後一個條件觸發'-print'和'-delete'。嘗試'找到。 \(-name「#*」-o name「*#」-o name「*〜」\)-print -delete'。 – alvits