リモートLinuxサーバーで愚かなことをしました。
- 私の作業ディレクトリは
/some/directory
- 私は走った
for dir in $(ls | grep "a_pattern"); do mv $d/* ./my_subdirectory; done
- これで、次の項目が
/some/directory/my_subdirectory
含まれており、bin
boot
dev
絶対home
にあってはならない項目が含まれています。
#2がどれほど愚かであるかを自由に指摘してください。私のエラーを正しく理解すること$d
は空です$dir
。したがって、デフォルトではyesコマンドを実行しますmv /* ./my_subdirectory
。
私がやったことに気づいたら、ctrl-c ctrl-cを押してコマンドが完了する前に停止しました。
私の質問は2つの部分で構成されています。まず、この問題を解決するにはどうすればよいですか?第二に、私のコマンドは実際に動作しますか?移動するもの/
、または単にコピーしますか?
私はそれを実行し、それが何か動くと期待していましたが、何も欠けているのをmv
見ませんでした。ここで明確でない場合は教えてください。たとえば、bash、cat、mount、および mkdir が含まれますが、これらのプログラムは移動されたのではなくコピーされたかのようにまだ存在します。なぜそんなことですか?以下のすべてのアイテムを安全に削除できますか?それともひどい間違いになるのでしょうか?./my_subdirectory
/
/some/directory/my_subdirectory/bin
/bin
/some/directory/my_subdirectory
コメントでtadの提案によると、以下はいくつかの結果ですfind ./my_subdirectory -type f
。
./my_subdirectory/bin/umount
./my_subdirectory/bin/date
./my_subdirectory/bin/sort
./my_subdirectory/bin/red
./my_subdirectory/bin/dumpkeys
./my_subdirectory/bin/sleep
./my_subdirectory/bin/readlink
./my_subdirectory/bin/mv
...
./my_subdirectory/etc/security/pam_env.conf
./my_subdirectory/etc/security/chroot.conf
./my_subdirectory/etc/security/access.conf
./my_subdirectory/etc/security/namespace.init
./my_subdirectory/etc/security/group.conf
./my_subdirectory/etc/security/console.handlers
確認してみると、ファイルはまだ下と/etc
下にあります/bin
。実行するとdiff ./my_subdirectory/etc /etc
共通のサブディレクトリが表示されますが、そのうちのいくつかは唯一のものですが、/etc
それらのどれも./my_subdirectory/etc
。だから物が移動されたのではなくコピーされたように見えます。 sudoでコマンドを実行しない場合、mv
これは予想されますか?
答え1
このコマンドをrootとして実行しないと仮定すると、データは単にコピーされたと想定されます。すぐにわかる方法は、diffを実行してディレクトリを比較することです。