web-dev-qa-db-ja.com

ディレクトリをファイルに、またはファイルをディレクトリに変換します

testという名前のファイルを作成したいと思いました。誤ってmkdir testではなくtouch testを実行します。

testという名前のファイルのtestディレクトリを変換することは可能ですか?

testという名前のファイルを同じ名前のディレクトリに変換するのはどうですか?

16
Ionică Bizău

これは、これまで触れたことがないUnixまたはLinuxでは不可能です。

一部の古いUnixでは、ディレクトリは特別にマークされたファイルですが、まだファイルです。たとえば、SunOSでは、catを使用してディレクトリを読み取ることができました。最近のファイルシステムの多くは、B +ツリーやその他のディスク上のデータ構造としてディレクトリを持っている場合があります。そのため、ファイルをディレクトリに、またはその逆に変更するには、常に同じ名前で削除と再作成が必要になります。

12
Bruce Ediger

まったく意味がないので、そのようなコマンドはありません。あなたの質問は、箱を平らな長方形に変換する方法を求めるようなものです。ボックス(ディレクトリ)にあるものをどうしますか?長方形は、元のボックスにどのように対応しますか?

ファイルとディレクトリは完全に異なる機能を果たします。 * nixシステムではディレクトリ 実際はファイル ですが、これはシステムの内部にのみ適用され、ユーザーであるユーザーには適用されません。したがって、ファイルをディレクトリに、またはその逆に変換するには、常にファイルを削除してディレクトリを作成する必要があります。同じiノードを使用することを期待できますが、その点についてはあまり重要ではありません。

5
terdon

必要なことを行う関数を作成します。 (bashまたはシェルのような他のBourne/POSIXを想定)

$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$ 

私は意図的にrmdirを使用しますが、adirがディレクトリでないか空でない場合は失敗します(強制する-fはありません)。 touchは、rmdirが成功した場合にのみ実行されます。

シェルカスタマイズファイル(.bashrc for bash)に関数定義を配置できます。

2
X Tian

なぜこれを実行するのか疑問に思う方は、次のスレッドに従ってください。

https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true

明らかに、ファームウェアのバグがファイルのディレクトリエントリのビットを反転させ、OSがファイルではなくフォルダであるとOSに認識させました。

問題のLinksysルーターはありませんが、somethingがすべての.jpgファイルを空のフォルダーに変更しました。 NTFSディレクトリエントリがフォルダではなくファイルであると言うビット(または何でも)をフリップする方法がある場合は、それについて知りたいのですが。

その2年の長いスレッドのソリューションの1つは、ファイルとして使用されるフォルダーを含むハードドライブがOS/Xを実行しているMacに接続されている場合、Macはそれらをファイルとして再び表示し、 Macのフォルダにコピーできます。私はそれを試すMacを持っていないので、誰かがビットを反転する方法を知っているなら...

2
Peter Dow

まず、ターミナルにアクセスし、ls -al fileを実行します。fileは、ACTUALフォルダーに戻すファイルです。リストされているファイルとサブディレクトリがある場合、それはあなたの「ファイル」が以前は実際のコンテンツを含むフォルダーであったことを意味し、続行することができます:

実行:

Sudo chmod 700 /

[〜#〜]または[〜#〜]

Sudo chmod 700 file

システムを再起動し、ターミナルアクセスを回復して実行します。

Sudo chmod 744 /

[〜#〜]または[〜#〜]

Sudo chmod 744 file

REMEMBER: "file"は、ACTUALフォルダーに戻すファイルに置き換える必要があります。

これはこの問題を解決するための恣意的な方法ですが、fsck -fを使用して修正するか(もちろんアンマウント中に)、必要に応じて手動で新しい権限を設定できる権限の異常を作成します。

もう一度、これは、以前は空でなかったフォルダであったファイルを削除する必要がないようにするための実証済みの方法にすぎません。

1
Alex S.