KSH:cpはファイルサイズのみに基づいています。

KSH:cpはファイルサイズのみに基づいています。

.logAディレクトリからBディレクトリに拡張子を持つすべてのファイルをコピーする小さなスクリプトを作成したいと思います。だから私のディレクトリAには次のものがあります。

ls : 
a.log
b.log
c.log

私が達成したい疑似コードは次のとおりです。

foreach *.log x do :
    if [stat -c %s pk_copylogs < 10485760]; then 
          cp  A/x  B/x       
    else
          read vANSWER?" >> File x is bigger than 10 MB, would you like to copy it anyway ? Type YES or NO : "
          if [ $vANSWER = "YES"]; then
              cp A/x B/x
          fi
    fi

ここで私の主な問題は私のforeach *.log

答え1

次の2つのコマンドを使用してこれを実行できます。

find A -name "*.log" -size -10485760c -exec cp {} B/ +
find A -name "*.log" -size +10485760c -exec cp -i {} B/ +

1つ目は10485760より小さいファイルを見つけて無分別にコピーします。 2 番目は、10485760 より大きいファイルを検索し、対話形式でコピーし、各コピーの入力を求めます。

単一のコマンドを使用して必要に応じて実行できるように、これをシェルスクリプトまたは関数に入れます。

関連情報