Не удалить файл с a'?' в имени файла этому не удается удалить с сообщением 'файл, не существует'.
Я попробовал посредством терминального использования
rm -f ./pathtofile\?.mkv
Но несмотря ни на какое сообщение об отказе файл все еще существует. Какие-либо предложения?
Эти ?
наиболее вероятно другой символ неASCII, который Ваша терминальная программа не может отобразить так, это отображается ?
. Это легко доказано - можно выполниться touch ?.mkv
и rm ?.mkv
- обе команды выполняются очень хорошо.
Файлы как этот легко удалены с помощью файлового менеджера GUI.
, Кроме того, Вы могли попытаться использовать подстановочные знаки. Если команда:
ls pathtofile\FewLetters*.mkv
списки единственный файл можно безопасно работать:
rm pathtofile\FewLetters*.mkv`.
Наконец Вы могли попробовать тяжелее, но более верный путь, как описано в не Может удалить файлы, содержащие специальные символы в имени файла , как указано Android Dev выше.
rm -f 'path?.mkv'
работы для меня. Исправьте меня, если я неправ, но эти ' '
действительно отключает функциональность некоторых специальных символов такой как ?
. Извините за плохое форматирование, rplying в скорости должен поспешить.
Hope, которой это помогает, хорошо проводят день =)
Делает файл, действительно имеют a ?
в имени файла, или это непечатаемый символ это ls
шоу как a ?
?
$ touch $'a\ab' 'a?b'
$ ls
a?b a?b
Один файл имеет Символ звонковой сигнализации ASCII на имя, и другой имеет простой вопросительный знак.
Более новые версии ls
может показать ему специальные символы в более ясной форме по умолчанию:
$ touch $'b\aa'
$ ls
'b'$'\a''a'
ls -q
то, как более старые версии ls
покажите непечатаемые символы по умолчанию. Так, если Вы просто делаете ls
в любой текущей версии Ubuntu Вы, вероятно, будете видеть просто вопросительные знаки.
Попробуйте, вместо этого, один из:
$ ls -b
a?b a\ab
$ printf "%q\n" *
a\?b
$'a\ab'
Если вывод от любого из них не имеет вопросительных знаков, то имя файла не имеет вопросительных знаков.
Можно использовать вывод printf
для удаления:
rm a\?b
rm $'a\ab'
Или полагайтесь на заполнение клавишей Tab:
$ rm a<tab>
a?b a^Gb
Если это показывает ^G
, затем нажмите CtrlV затем CtrlG для ввода его. Или скажите удару циклически повторяться посредством завершений вкладки:
$ bind tab:menu-complete
$ rm a<tab>
$ rm a\?b<tab>
$ rm a^Gb
В любом случае, с помощью rm a?b
мог работать, но опасен. Это соответствовало бы всем именам файлов, запускающимся с a
, окончание в b
и наличие одного промежуточного символа:
$ touch acb; printf "%q\n" a?b
a\?b
$'a\ab'
acb
Так, если Вы делаете rm a?b
(или хуже, rm a*b
), Вы могли закончить тем, что удалили файлы, Вы не намеревались.