Как удалить файл файловой системы NTFS, имя которого содержит “:”?

Оболочка POSIX (поэтому включает bash) эквивалентный был бы:

${FOO:-${BAR:-default}}

См. также:

${FOO-${BAR-default}}

вариант, который проверяет, установлена ли переменная или не вместо того, решает ли это к пустой строке или не (который имеет значение в случаях, где переменная установлена, но пуста).

5
21.11.2013, 10:59
6 ответов

Выполненный chkdsk /f в Windows. Это должно удалить файлы с недопустимыми символами или зафиксировать их имена файлов так, чтобы они могли быть удалены вручную.

5
27.01.2020, 20:36
  • 1
    , Остерегаются этого для имен файлов, которые содержат двоеточия, 'фиксация' - то, что файлы удалены. –  Royce Williams 09.05.2014, 19:22
  • 2
    @RoyceWilliams благодарит за Ваш комментарий, я разъяснил свой ответ. Реальный вопрос состоит на самом деле в том, как удалить файлы с недопустимыми именами файлов. –  jofel 12.05.2014, 18:16
  • 3
    К сожалению, от моего тестирования, после того как файлы с двоеточиями были созданы, chkdsk (и его принудительное удаление) единственный способ удалить файлы. –  Royce Williams 17.05.2014, 09:46

NTFS поддерживает "потоки", как "ветвления" + HFS и в отличие от чего-либо в обычных файловых системах Unix.

Конвенция по Windows состоит в том, чтобы назвать потоки как часть имени файла, разделив имя файла от потокового названия с a :, то, которое является, почему Вы добирались, "не могло найти этот объект" - для имени "здесь: попробуйте это", Windows искал поток, "пробуют это" в файле "здесь". Я заключаю, что можно сказать Windows не анализировать имена файлов как это, но я не знаю как.

ntfs-3g имеет опцию монтирования включить совместимый парсинг потокового имени, смонтировать фс с -o streams_interface=windows и ntfs-3g будет рассматривать : тот же путь в именах файлов. Таким образом проверять на это, mount|grep windows должен работать достаточно хорошо.

3
27.01.2020, 20:36

попробовать rm ./: или rm ./":" или rm ./\: в этом порядке :)

0
27.01.2020, 20:36
  • 1
    , который я попробовал, но он не работает. –  Hongxu Chen 21.11.2013, 11:40

Попытайтесь архивировать с winrar - выбор 'удаляет файлы после архивации' в возможностях архивирования. Это должно переместить Ваши файлы в rar файл и удалить исходные файлы. Затем удалите rar файл.

-1
27.01.2020, 20:36

Я не понимаю, почему это вызывает Ваши проблемы. Следующие тесты были запущены в файловой системе NTFS:

 $ mount| grep win
/dev/sda3 on /winblows type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
$ grep winb /etc/fstab
UUID=C0BCD19CBCD18D72   /winblows   ntfs    defaults    0   0
$ pwd
/winblows/foo

Так, я нахожусь в разделе NTFS, и я работаю:

$ touch :a a: a:b
$ ls
:a  a:  a:b
$ rm :a a: a:b

Все те команды работают, так или иначе, возможные обходные решения:

rm \:a
rm -- :a
rm ':a'
rm *:*
find . -name "*:*" -delete
0
27.01.2020, 20:36
  • 1
    , я держу пари, что это streams_interface смонтируйте опцию: "При помощи опций "streams_interface=windows", с ntfs-3g драйвером (не возможный с lowntfs-3g), Вы сможете считать любые именованные потоки данных, просто путем определения названия потока после двоеточия. Например: cat some.mp3:artist. Названные потоки данных действуют как нормальные файлы, таким образом, можно читать от них, запишите в них и даже удалите их (использование комнаты). Можно перечислить все именованные потоки данных, которые файл имеет путем получения "ntfs.streams.list" расширенный атрибут". –  jthill 22.11.2013, 04:00
  • 2
    @jthill да, который походит на проблему OP, почему бы не отправить ответ? Однако, все мои предложенные обходные решения должны работать. –  terdon♦ 22.11.2013, 05:40
[116998] Если вы ранее пытались запустить Windows chkdsk на файловой системе ntfs-3g, содержащей двоеточия, но она была смонтирована и использовалась под Linux без опции [117624]windows_names[117625] или [117626]streams_interface=windows[117627], то единственный способ восстановить целостность файловой системы NTFS - это загрузить операционную систему Windows и позволить Windows [117628]chkdsk[117629] навсегда удалить все файлы, содержащие двоеточия.

Скажем иначе: будьте [117630] очень, очень осторожны [117631] под управлением Windows [117632]chkdsk[117633] на файловой системе NTFS, которая была написана с использованием ntfs-3g под Linux. [117634]Вы потеряете все файлы, содержащие двоеточия.

Есть два последствия использования ntfs-3g, которые взаимодействуют между собой:

Tuxera придерживается буквы спецификации NTFS, которая допускает двоеточия в именах файлов. Однако практически никто не использует файловые системы, которые являются исключительно не совместимыми с Windows NTFS, и никогда не предназначались для использования с Windows, поэтому почти каждый на самом деле нуждается в небезопасном поведении.

Tuxera рекомендует отказоустойчивый способ восстановления поврежденной файловой системы NTFS - это загрузка операционной системы Windows, и запуск [117978]chkdsk[117979]. (Это также произойдет автоматически, если вы загрузите операционную систему Windows и файловая система будет обнаружена как нуждающаяся в восстановлении).

  • Итак, если вас интересует долгосрочная стабильность и безопасность вашей файловой системы, то в конце концов вам нужно будет загрузить операционную систему Windows и запустить [117640]chkdsk[117641] для ее восстановления. Но при запуске Windows [117642]chkdsk[117643] удалит все файлы с двоеточиями в именах файлов [117644] без подсказок и предупреждений.
  • К сожалению, многие используют NTFS как универсальную файловую систему для переноса и резервного копирования. Двумя распространенными файлами, содержащими имена файлов в Linux, являются письма, названные по их теме (Re:, Fwd: и т.д.), и письма, хранящиеся в формате Maildir. Поэтому, если вы создаете файловую систему ntfs-3g с нуля для этой цели, убедитесь, что вы всегда монтируете ее, используя опцию монтирования [117646]windows_names[117647] и в [117648]/etc/fstab[117649]. Когда вам в конце концов нужно запустить [117650]chkdsk[117651], все файлы, созданные на файловой системе, должны быть действительными.

Если вы этого не сделаете, то, возможно, вы не сможете удалить или сохранить большинство или все ваши файлы Windows-valid (файлы, содержащие двоеточия и т.д.). После того, как вы создали недействительные файлы, Windows будет считать файловую систему поврежденной до тех пор, пока эти файлы не будут очищены -- и только Windows сможет восстановить файловую систему. Поэтому восстановить или удалить файлы из Linux будет невозможно.[117011].

2
27.01.2020, 20:36

Теги

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