Не удалить пустые каталоги со странными именами

Я прохожу трудное время, пытаясь удалить три пустых каталога, которые были созданы после прерванного процесса "стирания свободного пространства на диске" bleachbit, я использовал каждый предложенный метод, и ни один, кажется, не работает, я пытался уничтожить их с bleachbit и удалить команды использования как rm -d, rm -f, rm -r, Я пытался переименовать их, перемещая их, я даже заменил Ubuntu 16.04 17,04 на всякий случай, который что случилось будет зафиксирован, но они все еще там.

Каталоги находятся в отдельном разделе а не в корневом каталоге. Их имена следующие:

  1. -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR
  2. CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC
  3. qoRSRba1C8bPYrpk_5OW6Qi9mPC.zhyzqUwivpQfArgb9

Каждый раз, когда я пробую что-то, что я получаю это сообщение, в котором говорится:

Никакой такой файл или каталог

вот часть вывода:

me@MyPC:~$ rm -f /media/me/702E29F142F/-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

me@MyPC:~$ rmdir -- $ 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC'
rmdir: failed to remove '$': No such file or directory
rmdir: failed to remove 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC': No such file or directory

me@MyPC:~$ rmdir -- 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC'
rmdir: failed to remove 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC': No such file or directory

me@MyPC:~$ rmdir 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC'
rmdir: failed to remove 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC': No such file or directory

me@MyPC:~$ rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR
rmdir: failed to remove '-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR': No such file or directory

me@MyPC:~$ sudo rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR
rmdir: failed to remove '-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR': No such file or directory



me@MyPC:/media/me/702E29F142F2362F$ rmdir -- $'qoRSRba1C8bPYrpk_5OW6Qi9mPC.zhyzqUwivpQfArgb9'
rmdir: failed to remove 'qoRSRba1C8bPYrpk_5OW6Qi9mPC.zhyzqUwivpQfArgb9': No such file or directory

Когда я пытаюсь переместить его в мусор или удалить Наутилус использования, это похоже на это:

Nautilus showing a similar "No such file or directory" error

2
задан 24 August 2017 в 23:45

2 ответа

Некоторые Ваши имена запускаются с -, так передача -- сначала или использование полный путь.

Для пустых каталогов используйте rmdir команда и запись -- как отдельное слово перед названием первого каталога, который удалит. Если -- не был передан (это относится к командам, которые Вы попробовали, а также rmdir) затем слова, которые начинаются - будет интерпретироваться как наборы управления опций, как команда ведет себя, а не как имена файлов для команды для работы на.

Необходимо будет записать команды на основе имен каталогов, которые Вы имеете. Из-за возможных ошибок в форматировании имен файлов в Exchange Стека визуальный редактор это - случай, где я не рекомендую копировать непосредственно с этого ответа. Однако как пример, который я ожидаю, что Вы измените по мере необходимости, если у Вас будет каталог, имя которого:

-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

И это пусто, и Вы находитесь в его родительском каталоге (можно использовать cd пойти туда и pwd для проверки, в каком каталоге Вы в настоящее время находитесь) затем можно удалить его как это:

rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

Или, если это принадлежит корню, или у Вас иначе нет полномочий удалить его:

sudo rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

Заметьте, что существует пространство после -- аргумент. Это важно.

Или можно использовать полный путь каталога. Затем Вы не должны волноваться, о каком каталоге Вы находитесь в том, когда Вы выполняете команду и -- является дополнительным. Например (на основе того, что Вы показали в комментарии):

rmdir /media/me/702E29F142F/-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

(Или с sudo rmdir, как выше.)

Некоторые имена могут содержать символы, которые требуют заключения в кавычки.

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

Не очевидно, что дело обстоит так на основе того, что Вы показали, но это - типичная проблема, таким образом, я включаю его на всякий случай. Если Ваши имена каталогов содержат пробелы или другие символы, которые рассматривает особенно оболочка как разрывы строки, *, или $, затем необходимо включить имена в одинарные кавычки. Это будет достаточно, пока сами имена не содержат одинарных кавычек.

В более общем плане, если Вы использовали cd для получения до каталога, который содержит эти каталоги необходимо смочь получить список записей в том каталоге (включая подкаталоги, Вы интересны в удалении) путем выполнения:

ls -1b

Это отличается от дежурного блюда ls команда двумя полезными способами:

  • -b отметьте заставляет пути быть распечатанными с escape-последовательностями, которые могут быть вставлены между $' '. Никакое пространство не должно появляться между начальной буквой $ и открытие ' символ.
  • -1 флаг делает ls перечислите одну запись на строку. Это может помочь уменьшить беспорядок о том, где концы имени файла и следующее начинаются.

Это должно позволить Вам записать команды, которые удаляют, переименовывают, и т.д. эти каталоги. Если они действительно пусты, можно затем использовать rmdir команда для удаления их. Вы, возможно, должны выполнить эту команду как корень, с которым можно сделать sudo.

Вот сознательно упрощенная иллюстрация того, какие команды Вы могли бы выполнить. Воображаемый ls -1b перечисленный:

abc\ def
ghi\njkl
pqr\b\b\bstuv
$$$$$$$\b\b\b$$$

В первом случае существует пространство. Во втором случае существует новая строка (разрыв строки). В третьем случае существует три символа возврата. В четвертом случае, который существуют оба $ и символы возврата.

Для удаления тех каталогов, Вы могли использовать:

rmdir -- $'abc\ def'
rmdir -- $'ghi\njkl'
rmdir -- $'pqr\b\b\bstuv'
rmdir -- $'$$$$$$$\b\b\b$$$'

Как выше, Вам, возможно, понадобится sudo.

rmdir может взять несколько имен файлов, но если Вы используете одну команду на удаление затем, может быть легче понять безотносительно сообщений об ошибках, которые Вы получаете, если таковые имеются.

В тех конкретных примерах имена каталогов не запускались с - и -- флаг не был необходим. Но это не делало ничего плохого.

$' ' по сравнению с плоскостью ' '

В отличие от заключения в кавычки с ' ', заключение в кавычки с $' ' обратная косая черта причин выходит как \n и \b быть расширенным.

'ghi\njkl' определяет файл, имя которого буквально:

  • ghi\njkl

Напротив, $'ghi\njkl' определяет файл, имя которого:

  • ghi jkl

При выполнении браузера графических файлов Вы можете перетаскивать от него.

С некоторыми браузерами графических файлов (такими как Наутилус, т.е. "Файлы") и некоторые терминалы (такие как Терминал GNOME), существует еще более легкий способ получить применимый полный путь в файл в терминальной команде, которую Вы пишете.

Это будет работать над большинством систем Ubuntu, которым установили графический интерфейс пользователя, но он никогда не будет в значительной степени работать, когда Вы войдете в систему удаленно через SSH.

Можно перетащить папку из окна файлового браузера в окно терминала для вставки полного пути к нему в терминале. С Вашей мышью по окну терминала отпустите кнопку.

Чтобы это было полезно, лучший подход должен записать команду, которую Вы хотите выполнить сначала. Например, запишите это и включайте пространство в конец, но еще не нажимайте Enter:

rmdir --

Затем перетащите папку из окна файлового браузера в окно терминала. Если Ваш файловый браузер и эмулятор терминала поддерживают его, необходимо видеть вставляемый путь, с \ или ' основанное заключение в кавычки автоматически обеспечивается. Можно затем нажать Enter для выполнения команды. Даже если команда не успешно выполнится, то это будет обычно давать более полезное сообщение об ошибке, чем Никакой такой файл или каталог.

5
ответ дан 2 December 2019 в 01:36

Графический метод

Я использовал бы nautilus файловый менеджер встроен в Ubuntu. Просто выделите каталоги, щелкните правой кнопкой и выберите, "отправляют к мусору". Если каталоги имеют большие файлы, Вы могли бы хотеть к очистить корзину сразу же.

Если каталоги будут принадлежать корневому Наутилусу, то не позволит Вам удалить их. В этом случае откройте терминал и использование:

gksu nautilus

Не может переместиться в мусор, но может удалить непосредственно

Согласно этому вопросу о Linux Mint некоторые файлы Windows не могут быть перемещены в мусор, но могут быть удалены непосредственно.

Другой ответ в этом потоке указывает, как узнать использование типа файловой системы:

df -T /media/<path_to_project_folder>

Затем изменение /etc/fstab запись работала на монтирование использующих различных параметров и успешно удаление файлов.


Терминальный метод

Согласно этому Суперпользователю Вопросы и ответы можно удалить файлы со специальными символами (странные имена) путем изменения на каталог, содержащий их и использование:

rm -i -- *

Это предложит Вам удалять каждый файл. Вы можете и должны измениться '*' на более узкое соответствие, если существует много файлов. -- опции обработки остановок, таким образом, файл называют -d будет удален комнатой успешно.

Другой ответ в том же потоке предлагает удалить inode использованием числа. Это говорит, что можно использовать ls -li показать все файлы их inode. Затем выполните эту команду для удаления файла:

find . -inum ${INODE_NUM} -delete

Можно добавить -maxdepth 1 к моей находке только для сейфа:

find . -maxdepth 1 -inum ${INODE_NUM} -delete
2
ответ дан 2 December 2019 в 01:36

Другие вопросы по тегам:

Похожие вопросы: