Назад | Перейти на главную страницу

Удалить файлы с нечетными именами

В моем домашнем каталоге есть эти два файла, которые я не могу удалить:

-rw-rw-r-- 1 steve steve       20551 Jan 27 23:51 \home\steve?esult_picture.png
-rw-rw-r-- 1 steve steve       22238 Jan 27 23:54 \home\steve?esult.png

Сообщения об ошибках: -

rm: cannot remove 'homesteve?esult_picture.png': No such file or directory
rm: cannot remove 'homesteve?esult.png': No such file or directory

chmod дает очень похожую ошибку

touch '\home\steve?esult_picture.png'
sudo rm -f '\home\steve?esult_picture.png'

touch '\home\steve?esult.png'
sudo rm -f '\home\steve?esult.png'

их тоже не удаляет.

Я почти уверен, что они были созданы по ошибке с помощью скрипта Python.

Используя Windows Explorer для просмотра общего ресурса smb, они называются _1UPF8 ~ X.PNG и _UYBX6 ~ Q.PNG, и их можно просматривать как изображения, как и следовало ожидать. Я ничего не могу с ними сделать из-за отсутствия соответствующих разрешений.

Есть идеи, как их удалить?

Стив

Знак вопроса, показанный ls вероятно, это не настоящий вопросительный знак в имени файла, а непечатаемый символ. Попробуйте использовать ls -b который печатает такие непечатаемые символы, как их escape-код в стиле C. например \ t для вкладки.

Вы также можете просто попробовать rm \home\steve?esult.png поскольку вопросительный знак соответствует одному символу (независимо от того, что это за символ). Однако необходимо удвоить обратную косую черту, поскольку теперь она пытается присвоить особое значение следующему символу.

Итак, это должно работать:

rm -f \\home\\steve?esult_picture.png
rm -f \\home\\steve?esult.png

В качестве альтернативы это также может быть полезно:

rm -fi *png

или, если в каталоге много файлов:

rm -fi *home*steve*esult*.png

В -i означает запрашивать перед каждым удалением; только ответить y к файлам, которые вы хотите удалить.

Чтобы удалить их, вам нужно будет использовать двойные кавычки:

rm -f "\home\steve?esult_picture.png"
rm -f "\home\steve?esult.png"

Обратные косые черты - это escape-символы, указывающие на то, что следующие символы имеют особое значение. Двойные кавычки укажут, что они являются частью имени файла, и позволят вам удалить файлы с rm команда.

Хорошо освоить rm команда, чтобы иметь возможность использовать ее для любых странных имен файлов (например, начинающихся с - например), и вы можете научиться делать это из других ответов здесь.

Есть и другое решение, которое может быть полезно во многих других случаях. Установите инструмент под названием mc он же Полуночный командир. Это файловый браузер, работающий в терминале, поэтому вы можете перечислить файлы, выделить тот, с которым хотите работать, а затем просто нажать F8 удалить его. Какие бы символы ни были в названии.

Видеть https://midnight-commander.org/

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