mv コマンドをファイル名とディレクトリ名リストの各行にマップします。

mv コマンドをファイル名とディレクトリ名リストの各行にマップします。

2つのファイル名とディレクトリ名を持つファイルがあります。mvファイル名ファイルの各行にあるコマンドをディレクトリ名ファイルの各行にマップしたいと思います。ファイルが小さい。

役に立つ場合は、ファイル名を順番に指定できます(例:f1、f2、f3...f1000)。ファイルとディレクトリを繰り返す方法はありますか?

3つのユースケースがあります。 1つのファイルを複数のディレクトリに、複数のファイルを1つのディレクトリに、複数のファイルを複数のディレクトリに(私の場合は1つのファイル/行= 1つのディレクトリ/行)。私のユースケースは最後のカテゴリに属します。私はいくつかのユースケースでこれが使用されているのを見ましたが、xargs私のユースケースに合わせて修正する方法がわかりません。

次の質問は役に立ちませんでした。https://stackoverflow.com/questions/11942422/moving-large-number-of-files

ベストアンサー1

与えられた

$ head files dirs
==> files <==
foo
bar
baz

==> dirs <==
foodir
bardir
bazdir

次に、新しいbashバージョンを使用してください。

$ while IFS= read -r -u3 f && IFS= read -r -u4 d; do 
    echo mv "$f" "$d/"
  done 3<files 4<dirs
mv foo foodir/
mv bar bardir/
mv baz bazdir/

またはGNUを使用してくださいparallel

$ parallel --xapply echo mv {1} {2}/ :::: files :::: dirs
mv foo foodir/
mv bar bardir/
mv baz bazdir/

おすすめ記事