rock.mpg
フォルダディレクトリにファイルがあります/folder1/folder2
。このファイルの複数の(340)コピーを異なるディレクトリに異なる/folder1/folder2/folder3
一意のファイル名にする必要があります。
340個の重複コピーの識別名はランダムで連続的ではありません。それらはabc.txt
私が持っている別のテキストファイルですでに定義されています。
重複したファイル名の例abc.txt
は次のとおりです。
MS123.mpg
DW235.mpg
WQ6748.mpg
HDJ74.mpg
...
...
まもなく
シェルスクリプトを使用してこれを達成できますか?
答え1
かなり簡単になりますxargs
。
xargs -a abc.txt -i cp /folder1/folder2/rock.mpg /folder1/folder2/folder3/{}
-a abc.txt
xargs
読むように指示しますabc.txt
(通常のようにstdinで読むのではなく)。-i
xargs
1行の入力に置き換えるように指示します。{}
テストしてみてください:
xargs -a abc.txt -i echo cp /folder1/folder2/rock.mpg /folder1/folder2/folder3/{}
答え2
BASHのみを使用:
while read newname ; do
cp old/dir/rock.mpg /new/dir/"$newname"
done < abc.txt
一行でも:
while read newname ; do ; cp old/dir/rock.mpg /new/dir/"$newname" ; done < abc.txt
メカニズムは、abc.txtの各行を変数newdirとして読み込み、この新しい名前を使用して古いファイルを新しい場所にコピーすることです。