bashはXパラメータを使用してコマンドを一度に実行します。

bashはXパラメータを使用してコマンドを一度に実行します。

txtファイルに保存されているファイルのリストがあります。

./test7
./test4
./test1
./test5
./test6
./test10
./test8
./test2
./test9
./test3

これらすべてのファイルに対してコマンドを実行したいのですが、両方のファイルを処理してから1秒間待機したいと思います。たとえば、次のようになります。

cp ./test1 test1-backup
cp ./test2 test2-backup
sleep 1
cp ./test3 test3-backup
cp ./test4 test4-backup
sleep 1
...
cp ./test9 test9-backup
cp ./test10 test10-backup

Bashスクリプトでこれを達成する方法はありますか? 1回の繰り返し(sleep 1呼び出し)中に実行されるコマンドの量をパラメータ化したいと思います。もう一つの問題は、実際のファイルリストが数十万行に達することです。

ベストアンサー1

私はあなたが実際のシナリオを説明していないと仮定します。何十万ものファイルをコピーしたいだけでなく、何十万秒も眠りたいと思うかもしれません...何? ! ?

それでも:

while IFS= read -r file1
      IFS= read -r file2
do
    cp "$file1" "${file1##*/}-backup"
    cp "$file2" "${file2##*/}-backup"
    sleep 1
done < inputFile

おすすめ記事