Escape o ~ com \~ ou use aspas simples '~' .
então você pode
rmdir ~/\~
ou
cd ~ ; rmdir '~'
Eu consegui criar um diretório literalmente chamado ~ .
(Aparentemente, o os.mkdir('~/something') do Python faz isso.)
Como posso removê-lo sem prejudicar minha casa?
Além disso, se ajudar, eu tenho o meu% real/home em uma partição separada. E a duplicata ~ está localizada em (o real ) ~ .
Escape o ~ com \~ ou use aspas simples '~' .
então você pode
rmdir ~/\~
ou
cd ~ ; rmdir '~'
O que python dá, o python tira:
$ python -c 'import os; os.makedirs("~/foo")'; tree; python -c 'import os; os.removedirs("~/foo")'; tree
.
└── ~
└── foo
2 directories, 0 files
.
0 directories, 0 files
Se você fez os.mkdir , poderá desfazer com os.rmdir (e da mesma forma para os.makedirs e os.removedirs ).
Você pode escapar o nome do diretório usando uma barra invertida como esta (supondo que você esteja operando no diretório pai daquele que deseja excluir):
rmdir \~
Ou você pode usar caminhos relativos com um ponto como o diretório atual (também quando localizado no diretório pai):
rmdir ./~
Ou você pode usar o caminho absoluto completo:
rmdir /home/USERNAME/~
E não se preocupe, rmdir só pode remover diretórios vazios. Se você digitar acidentalmente o comando e o caminho for avaliado para o seu diretório pessoal real, ele não estará em perigo porque contém arquivos:
$ rmdir directory_with_files
rmdir: failed to remove ‘directory_with_files’: Directory not empty
find pode fazer esses milagres. O comando
ls -i
lhe dará um número inode de arquivos ou diretório.
Em seguida, você pode usar find para excluir esses arquivos ou diretório usando:
find . -inum <inode-number> -delete #for a file
e
find . -inum <inode-number> -exec rm -rf {}\; #for directories
Você deve ter realizado home=os.path.expanduser("~") primeiro e, em seguida, os.path.join(home,"something") . O ~ é tratado como texto em python e não expande como em bash ou outros shells.
$ python -c 'import os;home=os.path.expanduser("~"); os.mkdir(os.path.join(home,"something"))'
$ ls -ld ~/something
drwxrwxr-x 2 xieerqi xieerqi 4096 7月 12 21:00 /home/xieerqi/something/
Além dos métodos já mencionados, podemos usar o valor hexadecimal para ~ da tabela ascii de caracteres, que ao contrário de% real~ não se expande para o diretório inicial do usuário na linha de comando (caso você esteja imaginando, quando o til aparece no começo de uma palavra, ele se expande para o diretório pessoal do usuário. Compare ls ~ e ls $'\x7e' ).
Veja como isso funcionaria:
# Make the directory
$ mkdir ./~
$ stat ./$'\x7e'
File: './~'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 5768019 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1000/ xieerqi) Gid: ( 1000/ xieerqi)
Access: 2017-07-12 21:05:31.382828424 -0600
Modify: 2017-07-12 21:05:31.382828424 -0600
Change: 2017-07-12 21:05:31.382828424 -0600
Birth: -
# and remove it
$ rmdir ./$'\x7e'
$ ls $'\x7e'
ls: cannot access '~': No such file or directory
Tags directory filesystem