2016-08-20 12 views
0

どのようにファイルを移動し、対象のファイルが小さい場合にのみ対象のディレクトリ内のファイルを上書きできますか?小さいファイルを上書きして移動する

私はいくつかのbashソリューションを探していましたが、標準のワイルドカードをサポートしているものは見つかりませんでした。

擬似コードは次のようになります。

WHEN mv -i is triggering prompt AND input_file_size > target_file_size: 
    mv input_file target_file 
+1

ファイルサイズで簡単に確認できるかどうかはわかりませんが、mvにはファイルの日付を比較するupdateの '-u'スイッチがあります。それはあなたのために働くだろうか? – Robert

+0

私は '-u'スイッチについて知っていますが、この場合はサイズ比較が必要です。例えば。静的なディレクトリの場合、ワイルドカードを使用しないと、より大きいファイルに「触れる」ことが容易になり、 '-u'を使用することも簡単になりますが、それも複雑です。 – null

+0

すでに小さいターゲットファイルに存在するデータは、大きな入力ファイルの先頭と同じですか? – Armali

答えて

0

bashはあなたがインプロセスのファイルサイズを取得することはできません。 あなたは

sz0=$(stat -c%s input_file) 
sz1=$(stat -c%s target_file) 
if ((sz1 < sz0)); then mv input_file target_file; fi 

ような何かを行うことはできますが、ループ内でこれを実行したい場合はhyperspeedを期待してはいけません。

+0

これは私が見ることができるから遅くなるでしょう。私はまだbashスクリプトではあまり良くありませんが、 '-i'プロンプトをつかんでアイデアを書くのは簡単ではありませんか? – null

+0

"-i'をキャッチすることによって意味するものがわかりません – PSkocik

+0

INPUTディレクトリに3つのファイルがあり、1つは(名前で)複製されていますが、TARGETディレクトリには小さいファイルがあります。あなたの方法は、無意味なすべてのファイルのサイズをチェックしています。 'mv -i' - 上書きする前にプロンプ​​トを表示すると、両方のディレクトリに同じファイルがある場合にのみ、INPUTの1つのファイルとTARGETディレクトリの1つのファイル(同名のファイル)がある場合にのみ起こります。 – null

関連する問題