Файл и каталог с одинаковым именем в одном родительском каталоге - Solaris 8, ufs - PullRequest
4 голосов
/ 17 сентября 2008

Хорошо, я работаю с Solaris более 10 лет и никогда не видел этого ...

У меня есть список каталогов, который включает в себя файл и подкаталог с одинаковым именем:

-rw-r--r--   1 root     other    15922214 Nov 29  2006 msheehan
drwxrwxrwx  12 msheehan sysadmin    2048 Mar 25 15:39 msheehan

Я использую файл для обнаружения содержимого файла и получаю:

bash-2.03# file msheehan
msheehan:       directory
bash-2.03# file msh*
msheehan:      ascii text
msheehan:       directory

Меня не беспокоит файл, но я хочу сохранить каталог, поэтому я пробую rm:

bash-2.03# rm msheehan
rm: msheehan is a directory

Итак, вот мой вопрос из двух частей:

  1. Что с этим?
  2. Как мне аккуратно удалить файл?

Jonathan

Edit: Спасибо за ответы, ребята, оба (до сих пор) были полезны, но передача списка редактору добилась цели, ала:

bash-2.03# ls -l > jb.txt
bash-2.03# vi jb.txt

Который содержал:

-rw-r--r--   1 root     other    15922214 Nov 29  2006 msheehab^?n
drwxrwxrwx  12 msheehan sysadmin    2048 Mar 25 15:39 msheehan

Всегда будьте осторожны с клавишей возврата!

Ответы [ 8 ]

6 голосов
/ 17 сентября 2008

Я бы предположил, что на самом деле это два разных имени файла, которые «выглядят» одинаково, поскольку командный файл смог их различить, когда оболочка передала расширенные версии имени в. Утилита / восьмеричного дампа, чтобы увидеть, действительно ли они имеют одинаковые имена или нет непечатных символов.

1 голос
/ 17 ноября 2010

Вы можете удалить с помощью iNode

Если вы используете опцию "-i" в "ls"

$ ls -li
total 1
20801 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a?
20802 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a\?
$ find . -inum 20802 -exec rm {} \;
$ ls -li
total 1
20801 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a?

У меня есть пример (на испанском языке), как вы можете удалить файл, используя iNode в Solaris. http://sparcki.blogspot.com/2010/03/como-eliminar-archivos-utilizando-su.html

Urko

1 голос
/ 17 сентября 2008

Мне интересно, что может вызвать это. Помимо ошибок в файловой системе, это может быть вызвано не характерным для ascii характером, который каким-то образом прошел. В этом случае используйте другой язык с более легкой семантикой строки для выполнения операции.

Было бы интересно посмотреть, что получится из этого фрагмента ruby:

ruby -e 'puts Dir["msheehan*"].inspect'
0 голосов
/ 13 октября 2008

Для части 2, так как одно имя содержит два дополнительных символа, вы можете использовать:

mv sheehan abc
mv sheeha??n xyz

Как только вы это сделаете, у вас снова появятся вменяемые имена файлов, которые вы сможете исправить по мере необходимости.

0 голосов
/ 20 сентября 2008

Один из быстрых и простых способов увидеть непечатаемые символы и пробелы - это передать данные через cat -vet , например:

# ls -l | cat -vet

Приятно и легко запомнить!

0 голосов
/ 18 сентября 2008

Чтобы увидеть, есть ли в вашем файле специальные символы, попробуйте опции -b или -q для ls, при условии, что у Solaris 8 есть эти опции.

В качестве другого решения для удаления файла вы можете вызвать графический файловый браузер. (вздох!) и перетащите ненужный файл в корзину.

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

mv msheehan temp
rm mshee*
mv temp msheehan

Конечно, вы хотите быть уверены, что только файл, который вы хотите удалить, соответствует шаблону. И, для вашего конкретного случая, поскольку один был каталогом, а другой - файлом, эта команда могла бы решить все это:

rmdir msheeha*
0 голосов
/ 17 сентября 2008

Я подозреваю, что у одного из них странный символ в имени. Вы можете попробовать использовать расширение подстановочного знака оболочки, чтобы увидеть, что: type

cat msh*

и нажмите клавишу расширения подстановочного знака (в моей оболочке это Ctrl-X *). Вы должны указать два имени, возможно, одно из которых содержит escape-символ.

0 голосов
/ 17 сентября 2008

И быстрый ответ на часть 2 моего собственного вопроса ...

Я мог бы представить, что могу переименовать каталог, удалить файл и снова переименовать каталог в исходный.

... Мне все равно было бы интересно узнать, что придут другие люди.

JB

...