Не удалить файл с a'?' в имени файла

Не удалить файл с a'?' в имени файла этому не удается удалить с сообщением 'файл, не существует'.

Я попробовал посредством терминального использования

rm -f ./pathtofile\?.mkv

Но несмотря ни на какое сообщение об отказе файл все еще существует. Какие-либо предложения?

4
задан 15 March 2016 в 03:44

3 ответа

Эти ? наиболее вероятно другой символ неASCII, который Ваша терминальная программа не может отобразить так, это отображается ?. Это легко доказано - можно выполниться touch ?.mkv и rm ?.mkv - обе команды выполняются очень хорошо.

Файлы как этот легко удалены с помощью файлового менеджера GUI.

, Кроме того, Вы могли попытаться использовать подстановочные знаки. Если команда:

ls pathtofile\FewLetters*.mkv

списки единственный файл можно безопасно работать:

rm pathtofile\FewLetters*.mkv`.

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

2
ответ дан 1 December 2019 в 09:08

rm -f 'path?.mkv' работы для меня. Исправьте меня, если я неправ, но эти ' ' действительно отключает функциональность некоторых специальных символов такой как ?. Извините за плохое форматирование, rplying в скорости должен поспешить.
Hope, которой это помогает, хорошо проводят день =)

2
ответ дан 1 December 2019 в 09:08

Делает файл, действительно имеют 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), Вы могли закончить тем, что удалили файлы, Вы не намеревались.

4
ответ дан 1 December 2019 в 09:08

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

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