Shell

刪除所有以問號開頭的文件

  • April 14, 2018

我有一個文件夾,裡面有大約 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 {} \;

引用自:https://unix.stackexchange.com/questions/82856