2012-01-13 3 views
1

30日前に作成/変更されたファイルを探してアーカイブしようとしています。このため私はUnix Findコマンドを使用しています。私は以下のコマンドラインで要件を達成することができます。findコマンドを使用してファイルを検索し、日付を付加してアーカイブする - 単一の検索コマンドが必要

find . -type f -mtime +30 -exec basename {} \; | xargs -I file_name echo mv /home/Cyrup/chip/arc_poc/file_name /home/Cyrup/chip/arc_poc/arc/file_name_$(date +%Y%m%d) | ksh 

は、しかし、私はちょうど私が達成することはできませんよ、findコマンドを使用してこのタスクを実行したいと思います。私は以下で使用しようとしました:

find . -type f -mtime +30 -exec mv {} /home/Cyrup/chip/arc_poc/arc/{}_`date +%Y%m%d` \; 

しかし、それはうまくいきません。ここでは、{}がfindコマンドで特定されたすべてのファイルのプレースホルダとして機能する場合です。それで、Dirをアーカイブするためにファイルを移動しながら、どこかに間違っていますか?..

また、-mtimeはファイルの変更時刻です。ファイルの作成時間に基づいてファイルを見つける方法はありますか?私の知る限りでは、findコマンドのオプションはありません。ちょうどfindコマンドでこれを行うことはできません

おかげ

+0

http://theunixshell.blogspot.in/2012/12 /create-achieve-with-all-files-from.html – Vijay

答えて

2

。あなたはおそらくリネームスクリプトを記述し、mvの代わりにそれを使用することができます

find . -type f -mtime +30 -exec appenddate.sh {} \; 

appenddate.shのようなものであることで:

mv $1 $1_`date +%Y%m%d` 
関連する問題