大容量ディレクトリの移動時に進行mv
状況(%)を表示する方法はありますか?cp
Gentooのコマンドには-g
進捗状況を表示するスイッチがあります。
答え1
progress
実行コマンドに関連する記述子を見つけ、進行状況と速度を表示するための新しいツールがあります。ここで見つけることができます
progress -w
実行中のすべてのcp、mv、およびその他のジョブの統計出力
答え2
もっと簡単な解決策があると、coreutilでバイナリを上書きするというアイデアが気に入らないので、ここに私の方法があります。
同期:rsyncはファイルをコピーし、プログレスバー-P
スイッチを持ちます。したがって、rsyncがインストールされている場合は、シェルドットファイルで単純なエイリアスを使用できます。
alias cp='rsync -aP'
欠点は、rsyncがcpより少し遅いことです。しかし、これを時間に合わせて測定し、自分で決める必要があります。私はそれで大丈夫です:-)
シェルスクリプト:シェルスクリプトは進行状況バーを生成することもできます。しばらく前からインターネットで見たのですが、ソースが覚えていません。
#!/bin/sh
cp_p()
{
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}
これは次のとおりです。
% cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================> ]
バー:
'bar' - ASCIIプログレスバーを持つ 'cat'
bar
すべての種類のアクション(cp、tarなど)のプロセスバーを表示するために使用される小さなシェルスクリプト。次の例を見つけることができます。プロジェクトのホームページ。
Bourne Shell用に書かれているので、近くのどこでも実行できます。
答え3
cp および mv のパッチバージョンをビルドでき、両方とも -g スイッチをサポートして進行状況を表示します。ガイドラインとパッチを含むこのページ。しかし、:ページでワークフローを案内します。
$ sudo cp src/cp /usr/bin/cp
$ sudo cp src/mv /usr/bin/mv
元のcpとmvを上書きします。これには2つの欠点があります。まず、最新のcoreutilsパッケージがシステムに到着すると、上書きされます。次に、パッチバージョンに問題があると、標準のcpとmvに依存するスクリプトがクラッシュする可能性があります。むしろ次のようにしたいと思います。
$ sudo cp src/cp /usr/local/bin/cpg
$ sudo cp src/mv /usr/local/bin/mvg
ユーザーがコンパイルしたプログラムのファイルを/usr/local/binにコピーし、別の名前を指定します。したがって、進行状況バーが必要な場合はmvg -g bigfile /mnt/backup
通常mvと言って使用します。
これを行うこともできますalias mvg="/usr/local/mvg -g"
。ただ話し、mvg bigfile /mnt/backup
進捗バーを直接インポートするだけです。
答え4
目標が進行状況バーを使用してディレクトリを移動/コピーすることですが、非ターミナルGUIを避けることであれば、mc(Midnight Commander)が良い選択です。