私が考えている特定の日時があるとしましょう。この日付より前に最後に編集されたすべてのファイルをディレクトリに保持したいが、この日付以降に編集されたすべてのファイルは別の場所にmv
したい。 man
のmv
ページは、これがmv
で直接可能であることを示していません。私は次の何らかの形がうまくいくはずだと思いました:
ls -t | head -n $number
どこ $number
は、私が考えていた日時以降に編集されたファイルの数を指定します。次に、これをmv
からmv
にフィードすることができます(正確な方法は考えていません)。これの欠点は、私が考えていた日時以降に編集されたファイルの数を数えなければならないことです。日付と時刻を指定して、どのファイルをmv
edおよびmv
する必要があるかをコンピューターに認識させる方法はありますか?そうでない場合は、上記で記述したコマンドを完了して、これらのファイル名をmv
にフィードし、すべてのmv
を同じ場所に移動させるにはどうすればよいですか。
find /path/to/dir -mtime +5 -exec mv {} /target/path/ ';'
/path/to/dir
内の5日より古いすべてのファイルを/ target/pathに移動します。
これを試して、実際に何が実行されるかを確認できます。
find /path/to/dir -mtime +5 -exec echo mv {} /target/path/ ';'
-mtime
パラメータはファイルの変更時間をチェックすることに注意してください。詳細については、 findのマンページ の-ctime
または-atime
を参照してください。
時間を分単位で指定する場合は、代わりに-mmin
、-cmin
、および-amin
のいずれかを使用してください。
特定の時間よりも若いファイルを検索するには、-
の代わりに+
を使用します。 -mmin -30
。
別の方法は、xargs
を使用することです(これは、各入力行でコマンドを実行します; manpage ):
find /path/to/dir -mtime +5|xargs -i echo mv {} /target/path
(実際に物を移動するには、「エコー」を削除します)