ラップトップの hdd から外部ドライブに大きなファイルをコピーするときに、転送の進行状況を確認できる小さなシェル スクリプトを作成しようとしていました。コマンドラインからは、これは pv と単純なリダイレクトを使用した単純な偉業ですが、行はかなり長く、ファイルサイズを知る必要があります (これがスクリプトが必要な理由です)。
console: du filename (正確なファイルサイズを取得するため)
コンソール: 猫のファイル名 | pv -s FILE_SIZE -e -r -p > dest_path/ファイル名
シェル スクリプトにegrep "[0-9]{1,}" -oを追加して、ファイル名を削除し、du の戻り値からサイズ番号だけを保持しました。残りは簡単なはずです。
#!/bin/bash
du $1 | egrep "[0-9]{1,}" -o
sudo cat $1 | pv -s $? -e -r -p > $2/$1
問題は、これを使用して file12345.mp3 をコピーしようとすると、egrep がファイル名から 12345 を取得しているため、あいまいなリダイレクト エラーが発生することですが、サイズが必要なだけです。つまり、最初の行からの戻り値は実際には次のようになります。
ファイルサイズ
12345
それはそれを悩ませます。最初の " " (スペース) まで最初の数字だけを解析するには、このスクリプトをどのように変更すればよいですか?
前もって感謝します。