2013-08-12 8 views
12

これは重複した質問かもしれませんが、この解決策を見つけることができませんでした。私は過去3ヶ月のファイルをあるディレクトリから別のディレクトリにコピーしたいのですが、次のコマンドを使用してファイルを削除します。linuxの変更日に基づいてファイルをコピーする

find . -mtime -90 -ls 

私は本当に-mtimeを使用してファイルをコピーする方法がわかりません。私はLinuxには新しく私を助けてください。

答えて

18

-execオプションを使用しますfindのために:

find . -mtime -90 -exec cp {} targetdir \; 

-exec(上記の例ではtargetdir)指定したディレクトリにfindによって返されたすべての結果をコピーします。

2

私は最初にファイルのリストを一時的に保存し、ループを使用すると思います。猫の前後に引用符が...バッククォートされ、多くの場合、キーボード

の左上隅にある:それはあまりにも大きくない場合は、

for f in `cat /tmp/copy.todo.txt`; 
do echo $f; 
done 

注意して、リストを読み込むことができ

find . -mtime -90 -ls >/tmp/copy.todo.txt 

その後、コピーコマンドでechoコマンドを置き換えることができ

for f in `cat /tmp/copy.todo.txt`; 
do cp $f /some/directory/ 
done 
+0

が右上に配置されて選択の日。疑問符の隣に。 (ヨーロッパ/北欧のキーボード) – f2lollpll

3

このコマンドを使用:

for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done 
3

一つも日の一定量に戻っ以外の正確な日付と時刻を選択することができたディレクトリ内のすべてのファイル

cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER 

以上のコピー2016年9月18日20時05分00秒以降に作成されたフォルダー(今日3ヶ月前):

findコマンドのシンボルに注意してください。これは「」ではありません' 日付選択は次のようになります:'

名前にスペース、改行、タブ、またはワイルドカードを含むファイルがある場合は、StéphaneChazelasのいずれかのソリューションを使用できます。 GNUのために、第二GNUまたはいくつかのBSDのためである:

find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} + 
find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "[email protected]" FOLDER' sh {} + 
1

例:私のキーボードのバッククォートで2017年9月8日

ls -l 
-rw-rw-rw- 1 root  system   943 Aug 09 02:59 File 

for j in `ls -l |awk '{ if ($7 == "09") print $9}'` 
    do 
     mv $j $Destination; 
    done 
関連する問題