Filesystems

FreeBSD:目錄名為 ^C(真的!) - 如何刪除?

  • January 28, 2018

我打錯了:

$ history
169 9:34    la /usr/local/etc/
170 9:35    sudo mkdir ^C
171 9:36    sudo mkdir /usr/local/etc/dnsmasq.d

現在我有一個名為 ^C (ctrl+C) 的文件!!當我使用時,ls我只看到一個問號(可能是由於語言環境?)

% ls -al
total 60
drwxr-xr-x  2 root   wheel    512 Jan 21 09:35 ?        <- this one
drwxr-xr-x  5 admin  wheel    512 Jan 21 16:24 .
drwxr-xr-x  3 root   wheel    512 Jan 20 14:29 ..
-rw-r--r--  1 admin  nobody  1114 Jan 20 19:10 .cshrc
-rw-------  1 admin  wheel   6002 Jan 21 15:27 .history
-rw-r--r--  1 admin  nobody   182 Jan 20 14:29 .login
-rw-r--r--  1 admin  nobody    91 Jan 20 14:29 .login_conf
-rw-------  1 admin  nobody   301 Jan 20 14:29 .mail_aliases
-rw-r--r--  1 admin  nobody   271 Jan 20 19:04 .mailrc
-rw-r--r--  1 admin  nobody   726 Jan 20 19:05 .profile
-rw-------  1 admin  nobody   212 Jan 20 14:29 .rhosts
-rw-r--r--  1 admin  nobody   911 Jan 20 19:06 .shrc
drwx------  2 admin  nobody   512 Jan 20 15:05 .ssh
drwxr-xr-x  2 admin  wheel    512 Jan 20 19:08 bin

% ls -i
3611537 ?   3611534 bin

我想刪除這個文件。我嘗試mv使用製表符完成時顯示:

% mv
^C/  bin/

顯然我不能輸入 ^C :-/ 如何刪除這個文件?

^V( ctrl+ v) 用作下一次按鍵的一種轉義序列,插入關聯的值,而不是採取通常關聯的任何操作。

利用這一點,^V^C( ctrl+ v, ctrl+ c) 應該可以在終端中輸入您的困難文件名。

您也可以通過 inode 刪除文件:

$ ls -i1
290742 foo
293246 ^C
$ find . -inum 293246 -delete

無論你做什麼,看在上帝的份上,不要放在-delete前面-inum

$ touch foo bar baz quux
$ find . -name '*u*' -delete
$ ls
bar baz foo
$ find . -delete -name 'b*'
find: `./baz': No such file or directory
find: `./bar': No such file or directory
$ ls
$ 

恭喜,您剛剛清除了所有文件。有了find參數順序很重要

引用自:https://serverfault.com/questions/893343