Удаление папки с именем ~

30

Это вывод ls -l

ls -l
total 53484
drwxr-xr-x 3 root root     4096 2011-02-10 05:59 ~
-rw-r--r-- 1 root root 54313810 2011-02-13 05:09 jobs.jar
-rw-r--r-- 1 root root   384035 2011-02-15 05:33 jobsLog.out

Я не могу сделать, rm -rf ~ потому что это удалит мой домашний каталог.

Что мне делать? Это не проблема для меня, но просто болит глаз.

theTuxRacer
источник
8
Я бы не стал писать rm -rfчто-то такое, что могло бы привести к провалу, если вы неправильно введете. Подумайте о том, чтобы войти в свою ./~папку и удалить ее содержимое, прежде чем перемещать каталог вверх и запускать rmdir ./~для удаления самого каталога ~.
adamnfish

Ответы:

58

rm -R ./~

Это заставит его искать ~в текущей папке.

Уорд Мюйлаерт
источник
вау, способ смотреть на вещи прямо! престижность!
theTuxRacer
2
Этот ответ правильный, но я думаю, что ответ Оли лучше, потому что он безопаснее. Если вы слегка опечатаете эту команду, вы навсегда погасите свою систему.
HDave
44

Ранее я допускал глупые ошибки, rmпоэтому вот несколько советов, которые я выучил за эти годы, чтобы защитить ваши данные от несчастных случаев:

  1. Используйте графическое решение, такое как Наутилус. Мягко удалите его в корзину. Затем, когда вы узнаете, что не поместили свой $HOMEмусор в корзину (все могло бы рухнуть и выглядело так весело), ​​очистите корзину.

  2. Переместить вместо удаления. Переименуйте каталог с помощью mv, например:

    mv ./\~ ./a-nice-sensible-directory-name

    Затем удалите его.

  3. Если сомневаетесь, используйте -iфлаг, когда имеете дело с потенциальными фубарами. Он будет запрашивать каждый удаленный файл и очень быстро сообщит, произойдет ли что-то плохое.

    oli@bert:~/Desktop$ rm -rfi ./del/
    rm: descend into directory `./del'? y
    rm: remove regular file `./del/output2.pdf'?
Оли
источник
1
не могу графический интерфейс, его ssh-терминал: P Хорошая идея о mv. Я думаю, что я должен сделать псевдоним rm с rm -i.
theTuxRacer
7
Вы можете заглушить ssh://user@ip/folderнаутилус. Не работает для всего (например, если вам нужно sudo), но вы идете. Псевдоним -i- это обоюдоострый меч. Это полезно, но также очень раздражает, когда вы делаете много файлов. Считай -Iтоже. И посмотрите на man rmдополнительные советы.
Оли
+1 за идею переезда. Теперь я удивляюсь, почему нет замены для rmэтого перехода (скажем) ~ / .Trash.
ShreevatsaR
19

Гениальная проблема :)

Вы можете удалить каталог, спасаясь тильды:

rm -rf \~

Это работает для всех видов специальных символов.

Стефано Палаццо
источник
17

Вы можете просто вставить имя папки в апострофы:

 rm '~'
Юрий Возий
источник
6

Еще один, немного более сложный способ сделать это - использовать номера инодов:

$ ls -li
total 24
 7146369 drwxr-xr-x   4 user  staff   136 Jan 19 21:50 ~
$ find . -xdev -inum 7146369 -exec rm -rf {} \;

Pros

  • Это работает с любым причудливым именем, которое вы можете иметь.
  • Должно быть безопасным, потому что номера инодов уникальны ( -xdevне спускайте каталоги в других файловых системах), и вы можете сначала проверить поиск, на всякий случай, удалив -exec rm -rf {} \;.

Cons

  • Выполнение find .в каталоге с большим количеством файлов и / или каталогов займет много времени и чтение диска.
superfav
источник
Меня всегда интересовали inode, и мне было интересно, можно ли это сделать =)
theTuxRacer
Конечно, это работает, только если ваша текущая файловая система имеет концепцию inode (не все файловые системы, поддерживаемые Ubuntu, имеют эту концепцию - хотя большинство из тех, которые не являются не родными файловыми системами Unix, такими как vFat и NTFS)
Billy ONeal