ファイル処理の順序を選択するにはmv
? (つまり、手動で呼び出すことはできますが、パスを維持して再帰的に作業するとすぐに問題になる可能性があります。)
一方のfsは/ mntにマウントされ、もう一方は/ homeにマウントされています。
/ mntには、複数のフォルダにさまざまなファイルが含まれています。
すべてを/homeに移動したい
しかし、移動順序を選択したいと思います。
たとえば、/mnt/a/t/d/v/file が /mnt/b/d/g/e/file よりも先に処理されるようにしたいとします。
利用可能な種類があれば使用できます(私の考えでは)。
答え1
これを行うとき:
mv /mnt/* /home/
/mnt/*
一致するファイルのリスト(このパターンの場合、これは隠されていないすべてのファイルです)/mnt
に展開して結果をに渡すためmv
、、、、...を別の引数としてmv
受け取るのはシェルです。mv
/mnt/a
/mnt/b
/mnt/c
/home/
デフォルトでは、シェルはグローバル拡張を語彙的にソートします。 zsh シェルでは、o
/ O
glob 修飾子を使用して順序を変更できます。
/mnt/a
は語彙的に前方に/mnt/b
整列しているため、前方に移動されます。逆順に移動するには:a
b
mv /mnt/*(DOn) /home/
zshで(隠しファイルを移動するための修飾子を追加しましたD
)
最初に移動するには、/mnt/b
次の手順を実行します。
set -o extendedglob
mv /mnt/b /mnt/^b(D) /home/
または:
mv /mnt/b /home/ && mv /mnt/*(D) /home/
通常、再帰的に機能しないようにmv
いくつか実行します。rename()ing
ただし、ファイルシステム間を移動するときはこれを行うことができないため、元のファイルを再帰的にコピーして削除する方法を使用します。
と が 2 つの異なるファイルシステムにあるmv /mnt/* /home/
場合は、前方に移動されますが、 にあるファイルの場合は順序付けされず、通常は制御できません。/mnt
/home
/mnt/a
/mnt/b
/mnt/a
/mnt/b
これらの順序を決定するには、個々のファイルを手動で移動する必要があります。または、cpio -p
指定されたpax -rw
順序でファイルをコピーしてからソースを手動で削除するように指示することもできます。