Чому я не можу мати папку та файл з тим самим іменем?


21

У мене ніколи не було цієї проблеми, але я чомусь не можу перейменувати свою папку packages/.

Це структура:

root
  -  packages_old/
  -  packages

Коли я намагаюся перейменувати папку в Thunar, я отримую повідомлення про помилку, в якому йдеться про те, що файл вже існує. Те саме mv:

blender iso $ mv packages_old/ packages/
mv: accessing `packages/': Not a directory

Чому я не можу перейменувати свій файл і папку з таким самим іменем:

root
  -  packages/
  -  packages

Я клянусь , що я зробив це раніше.


19
Напевно, ваша пам’ять не настільки нерозумна, як ви думаєте. На платформі unix "все - файл". Ви не можете мати файл і папку з тим самим іменем, оскільки каталоги - це лише особливий вид файлу. Це пов'язано з традиційними .dрозширеннями для каталогів у /etc. Припустимо, ви зробили ls packagesабо vim packages- як система знала, якби ви хотіли каталог чи файл?
jw013

2
Не могли б ви сказати нам, яку ОС ви використовуєте? Тому що ви не можете мати файл, а каталог має те саме ім’я в більшості ОС, яку я знаю
rahmu

2
@ j013, чому ти відповів у коментарі та не написав відповіді ?
andcoz

1
Ви також не можете це зробити в Windows. На моїй машині Windows 7, намагаючись це зробити, виникає помилка:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down

4
У Windows налаштуваннями за замовчуванням є ігнорування розширень, тож ви можете мати packageкаталог та package.txtфайл у одній папці. З Провідника Windows з'ясується, що вам потрібно записати під назвою "пакет", адже насправді він просто приховує частину імені одного файлу.
Арседж

Відповіді:


35

В Unix майже все є файлом. Каталог - це особливий тип файлів, який з точки зору користувача може "містити" інші файли.

Помилка Not a directoryвиникає через те, що ваш існуючий файл не є каталогом, а оскільки каталог - це тип файлу, і в одному каталозі не може бути двох однаково названих файлів, операція не може бути виконана.


6
Що стосується вашої проблеми з пам’яттю, можливо, раніше ваш файл та каталог мали одне ім’я, але з різними регістрами, як-от "package" та "Package". Назви файлів залежать від регістру, тому це може працювати.
noamtm

2

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

Для наступного псевдокоду:

isDir('/path/to/same_file_and_folder_name')

Чи повинна ОС відповідати правдою чи хибністю?


Він повинен просто повернути "обидва".
Антон


1
@ G-Man Тип булевого очікуваного, отриманого об'єкта (обіцянки).
Скотт Ян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.