Как удалить файл с именем '' $ '\ r'? - PullRequest
0 голосов
/ 14 октября 2019

По некоторым причинам у меня есть файл в одном из моих каталогов, который я не могу удалить:

$ ls -al
drwxrwxr-x 2 xxx xxx 4096 Oct 10 14:05 ''$'\r'
(more files follow...)

Проблема в том, что я не могу удалить его. Я пробовал rm ''$'\r' и ls, используя подстановочные знаки, чтобы хотя бы увидеть, что ему соответствует, но безуспешно. Интересно, что ls -al ?, ls -al ?? и т. Д. Не перечисляют файл.

Возможно, я мог бы удалить весь каталог и впоследствии восстановить другие файлы, но я думаю, что должно быть возможно: 1) указать правильное имя файла и 2) затем удалить файл с этим именем.

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Мне наконец-то удалось сделать это следующим образом:

ls -i # find the inode of the file
find . -inum 4350083 -delete 

Не уверен, почему имя не указано в форме, которую можно ввести. Я попытался заключить его в $ '...', но это тоже не сработало.

1 голос
/ 14 октября 2019

Поскольку вы используете bash в интерактивном режиме, вы можете использовать завершение имени файла. Первый символ в имени файла является специальным для оболочки, поэтому вам нужно его экранировать. Баш должен сделать все остальное. Поэтому введите:

rm \'

Затем нажмите клавишу табуляции, и bash должен завершить имя файла для вас, с правильным экранированием и т. Д. Затем просто нажмите Enter, чтобы удалить его.

0 голосов
/ 14 октября 2019

Я думаю, что это нормально.

rm "''$'\r'"
...