test
という名前のファイルを作成したいと思いました。誤ってmkdir test
ではなくtouch test
を実行します。
test
という名前のファイルのtest
ディレクトリを変換することは可能ですか?
test
という名前のファイルを同じ名前のディレクトリに変換するのはどうですか?
これは、これまで触れたことがないUnixまたはLinuxでは不可能です。
一部の古いUnixでは、ディレクトリは特別にマークされたファイルですが、まだファイルです。たとえば、SunOSでは、cat
を使用してディレクトリを読み取ることができました。最近のファイルシステムの多くは、B +ツリーやその他のディスク上のデータ構造としてディレクトリを持っている場合があります。そのため、ファイルをディレクトリに、またはその逆に変更するには、常に同じ名前で削除と再作成が必要になります。
まったく意味がないので、そのようなコマンドはありません。あなたの質問は、箱を平らな長方形に変換する方法を求めるようなものです。ボックス(ディレクトリ)にあるものをどうしますか?長方形は、元のボックスにどのように対応しますか?
ファイルとディレクトリは完全に異なる機能を果たします。 * nixシステムではディレクトリ 実際はファイル ですが、これはシステムの内部にのみ適用され、ユーザーであるユーザーには適用されません。したがって、ファイルをディレクトリに、またはその逆に変換するには、常にファイルを削除してディレクトリを作成する必要があります。同じiノードを使用することを期待できますが、その点についてはあまり重要ではありません。
必要なことを行う関数を作成します。 (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
)に関数定義を配置できます。
なぜこれを実行するのか疑問に思う方は、次のスレッドに従ってください。
明らかに、ファームウェアのバグがファイルのディレクトリエントリのビットを反転させ、OSがファイルではなくフォルダであるとOSに認識させました。
問題のLinksysルーターはありませんが、somethingがすべての.jpgファイルを空のフォルダーに変更しました。 NTFSディレクトリエントリがフォルダではなくファイルであると言うビット(または何でも)をフリップする方法がある場合は、それについて知りたいのですが。
その2年の長いスレッドのソリューションの1つは、ファイルとして使用されるフォルダーを含むハードドライブがOS/Xを実行しているMacに接続されている場合、Macはそれらをファイルとして再び表示し、 Macのフォルダにコピーできます。私はそれを試すMacを持っていないので、誰かがビットを反転する方法を知っているなら...
まず、ターミナルにアクセスし、ls -al file
を実行します。fileは、ACTUALフォルダーに戻すファイルです。リストされているファイルとサブディレクトリがある場合、それはあなたの「ファイル」が以前は実際のコンテンツを含むフォルダーであったことを意味し、続行することができます:
実行:
Sudo chmod 700 /
[〜#〜]または[〜#〜]
Sudo chmod 700 file
システムを再起動し、ターミナルアクセスを回復して実行します。
Sudo chmod 744 /
[〜#〜]または[〜#〜]
Sudo chmod 744 file
REMEMBER: "file"は、ACTUALフォルダーに戻すファイルに置き換える必要があります。
これはこの問題を解決するための恣意的な方法ですが、fsck -f
を使用して修正するか(もちろんアンマウント中に)、必要に応じて手動で新しい権限を設定できる権限の異常を作成します。
もう一度、これは、以前は空でなかったフォルダであったファイルを削除する必要がないようにするための実証済みの方法にすぎません。