
次のコマンドを使用していくつかのファイルを非表示にしました:
mv * .*
しかし、今はそれらを見つけることができません。私は以下を使ってみました:
mv .* *
しかし何も起こりませんでした(エラーが表示されました)。以下を実行すると、
ls -la
表示されています:
total 8
drwxrwxr-x 2 abhishek abhishek 4096 Mar 9 20:46 .
drwxrwxr-x 4 abhishek abhishek 4096 Mar 9 20:46 ..
隠しファイルを復元する方法はありますか?
答え1
ファイルは非表示になっていません。すべてのファイル (およびディレクトリがある場合はディレクトリ) が 1 つ上のディレクトリに移動されています。
これは、mv * .*
思った通りに動作しないために発生します。このコマンドは、mv
1 つのファイルを 1 つのファイルに移動 (名前変更) するか、1 つまたは複数のファイルをディレクトリに移動するだけです。スマートな名前変更で複数のファイルを複数のファイルに移動するわけではありません。
どうしたの?
ディレクトリが 1 つあり、そのディレクトリ内に 3 つのファイルがあると仮定します。
dir1
file1
file2
file3
一部のシェル (例bash
: dash
、、...) では、コマンドが次のように展開されます。
mv dir1 file1 file2 file3 . ..
展開されたコマンドは、次の SYNOPSIS の 2 番目の形式に適合しますman mv
。
mv [OPTION]... SOURCE... DIRECTORY
.
および に注意してください..
:
.
現在のディレクトリです。..
1つ上のディレクトリです。
このコマンドは、、、およびを に移動することを意味しますdir1
。file1
また、次file2
のようなエラーも発生します。file3
.
..
mv: cannot move '.' to '../.'
ただし、そのディレクトリへの書き込み権限がある場合、他のすべてのファイルは移動されています。ファイルは..
(1 つ上のディレクトリ) にあります。ただし、同じ名前のファイルは上書きされているため、どのファイルがどのディレクトリにあったかはわかりません。
サブディレクトリがあった場合.hidden-dir
、次のように展開されます。
mv dir1 file1 file2 file3 . .. .hidden-dir
その後、すべてのファイルは に移動されます。ただし、出力に.hidden-dir
が表示されているため、これは当てはまらないようです。.hidden-dir
ls -la
直し方
走る:
mv ../dir1 ../file1 ../file2 ../file3 .
ただし、名前を知っておく必要があります。
使用すべきだったもの
mmv '*' '.#1'
または
rename 's/^/./' *