両方のディレクトリのファイル日付の比較

両方のディレクトリのファイル日付の比較

同じ名前のファイルを含む2つのディレクトリがあります。デフォルトでは、作成日が最新の場合はdir1/file.txtをdir2/file.txtに置き換えたいと思います。しかし、ifの条件で何かが欠けていると思います。

#!/bin/bash
for i in /dir1/*; do
        nameFIRR=$(basename "$i")
        dateINPUT="$(date -r $i)"
        dateOUTPUT="$(date -r /dir2/$nameFIRR)"

        if [ $dateINPUT -ge $dateOUTPUT ];
        then
         cp -u $i /dir2/$nameFIRR
        fi
done

答え1

2つの一般的な解決策があります。

  1. rsync1つは次のとおりです。

rsyncman rsync詳細は、多数のオプションを含む強力なツールです。しかし、簡単にまとめると、コマンドは次のようになります。

rsync [オプション] ソースターゲット

あなたの場合は、次のようにします。

#!/bin/bash
rsync -t dir1/file.txt dir2/file.txt 
  1. オプションの「コピー」(cp)コマンドは-u別のコマンドです(Stephen Kittのコメントに基づいています)。
#!/bin/bash
cp -u dir1/file.txt dir2/file.txt 

関連情報