同じ名前のフォルダーとファイルを作成できないのはなぜですか?


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 packagesvim packagesディレクトリやファイルを望んでいた場合はどのようにシステムが知っているだろうか- ?
jw013

2
使用しているOSを教えていただけますか?私が知っているほとんどのOSで同じ名前のファイルとディレクトリを持つことはできないため
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.
クリス・ダウン

4
Windowsでは、デフォルト設定では拡張子を無視するため、packageディレクトリとpackage.txtファイルを同じフォルダーに入れることができます。Windowsエクスプローラからは、「パッケージ」と呼ばれるエントリが必要なように見えますが、実際にはファイル名の一部を隠しているだけです。
アルセージュ

回答:


35

Unixでは、ほとんどすべてがファイルです。ディレクトリは、ユーザーの観点から他のファイルを「含める」ことができる特別なタイプのファイルです。

このエラーNot a directoryは、既存のファイルがディレクトリではなく、ディレクトリがファイルの一種であり、1つのディレクトリに同じ名前のファイルが2つ存在できないため、操作を実行できないために発生します。


6
メモリの問題については、過去にはファイルとディレクトリの名前が同じで、大文字と小文字が異なる「パッケージ」や「パッケージ」などでした。ファイル名は大文字と小文字が区別されるため、機能します。
noamtm

2

あなたがそのようなことをすることができたなら、ディレクトリ内のファイルを反復しようとすると、私のようなプログラマにとって人生は悲惨になるからです。

次の擬似コードの場合:

isDir('/path/to/same_file_and_folder_name')

OSはtrueまたはfalseで応答する必要がありますか?


「両方」を返すだけです。
アントン


1
@ G-Man Typeブール値が必要です。オブジェクトを取得しました(約束)。
スコットヤン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.