ファイルを開き、リストされたファイルを別のフォルダにコピーします。

ファイルを開き、リストされたファイルを別のフォルダにコピーします。

次のファイル名を含むファイルがありますfile1.txt

filea.txt
fileb.txt
filec.txt

file1.txtリストされたファイルを別のフォルダにコピーしたいです。どのUNIXコマンドが使用されますか? (シェルはksh88関連しています)。

ベストアンサー1

あなたの形式では、ファイル名に改行文字がないと仮定していますが、これは理想的ではありません(ファイル名に改行文字が許可されています)。また、あなたの殻について言及していません。ただし、POSIXシェルでは次のことができます。

while IFS= read -r file; do
    cp -- "$file" new_dir/
done < file

ただし、bashでは、すべてのエントリを一度にcpに渡す方が速くなる可能性があります(以下にある限りARG_MAX)。

files=()

while IFS= read -r file; do
    files+=( "$file" )
done < file

cp -- "${files[@]}" new_dir/

...またはbash4+がある場合も同様です。

mapfile -t files < file
cp -- "${files[@]}" new_dir/

おすすめ記事