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


15

という名前のファイルを作成したかったtest。誤ってのmkdir test代わりに実行しますtouch test

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

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


5
rm -f test && touch testこれを除いて、私は本当に知らない
-Kiwy

@Kiwyうん、しかし、私はこのタスクを実行するために設計された組み込みコマンドを想像しています。
IonicăBizău

回答:


12

これは、これまで触れたUnixやLinuxでは不可能です。

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


1
面白い。誰も解決策を持っていない場合は、この答えをマークします。:-)
IonicăBizău

5

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

ファイルとディレクトリは、まったく異なる機能を提供します。ディレクトリは実際には* nixシステムのファイルですが、これはシステムの内部にのみ適用され、ユーザー(ユーザー)が参照するものには適用されません。そのため、ファイルをディレクトリに、またはその逆に変換するには、常にファイルを削除してディレクトリを作成する必要があります。期待できる最善の方法は、同じiノードを使用することですが、この点でもそれほど重要ではありません。


意味がないと言うのはあなたの意見であり、テクニカルな事実ではありません。
シュリダールSarnobat

@ user7000ファイルに「変換」するとき、ディレクトリの内容をどうしますか?
テルドン

ファイルシステムは、データをツリー構造で保存します。コンピューターサイエンスでは、リーフノードであるツリーノードは、子を追加すると内部ノードになる可能性があります。いいえ、ファイルシステムで十分な場合はデータベースを使用しません。
スリダールサルノバット

2

必要なことを行う関数を作成します。(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ためbash)。


@Stephane Chazelasなにを--するの?
Xティエン

2
--フラグの終わりをマークするので、たとえそれがで始まっていても、それ以降のファイル名rmdirtouch知っています-
ケビン14年

2

なぜこれをしたいのかと思っている人には、このスレッドに従ってください:

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

ファームウェアのバグが原因でファイルのディレクトリエントリのビットが反転し、OSがファイルではなくフォルダであると認識しているようです。

私は問題のLinksysのルータを持っていませんが、何かが空のフォルダにすべての私の.jpgファイルを変更しました。NTFSディレクトリエントリがフォルダとファイルのどちらであるかを示すビット(または何でも)を反転させる方法がある場合、それについて知りたいと思います。

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


1

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

実行:

sudo chmod 700 /

または

sudo chmod 700 file

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

sudo chmod 744 /

または

sudo chmod 744 file

覚えておいてください「ファイル」は、実際のフォルダに戻すファイルに置き換える必要があります。

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

繰り返しになりますが、これは、以前は空ではなかったフォルダーであったファイルを削除する必要がないようにするための実証済みの方法です。


興味深いアプローチ...
eyoung100
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.