Shell
刪除所有以問號開頭的文件
我有一個文件夾,裡面有大約 4k 個文件。其中一些文件以 aa
?
或!
字元開頭。我需要刪除它們,但找不到可以這樣做的表達式:
rm -f ./?*
只是刪除所有內容。我可以
grep
在 ls 上使用並通過管道xargs
將文件移動到另一個文件夾,但我希望有一種正確的方法可以做到這一點。?
在和!
文件上都需要幫助。
不需要任何花哨的東西。只需將其轉義
?
,使其不被視為全域的一部分:rm -f ./\?*
這也適用於
!
:rm -f ./\!*
或者一氣呵成:
rm -f ./{\?,\!}*
更新
剛剛注意到您
grep
建議ls
. 我想讓您注意您不應該解析 ls 的輸出這一事實
就我而言,這些字元並不是真正的問號,而是顯然無法在我的控制台中顯示的 Unicode 字元。
使用
rm -i *
對我有用。如果您不想這樣做,您也可以按 inode 刪除,如http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html所述。要查找 inode,請使用:
ls -il
然後做:
find . -inum [inode-number] -exec rm -i {} \;