web-dev-qa-db-ja.com

mvを使用すると、mvされたファイルに時間依存性を持たせることができますか?

私が考えている特定の日時があるとしましょう。この日付より前に最後に編集されたすべてのファイルをディレクトリに保持したいが、この日付以降に編集されたすべてのファイルは別の場所にmvしたい。 manmvページは、これがmvで直接可能であることを示していません。私は次の何らかの形がうまくいくはずだと思いました:

ls -t | head -n $number 

どこ $numberは、私が考えていた日時以降に編集されたファイルの数を指定します。次に、これをmvからmvにフィードすることができます(正確な方法は考えていません)。これの欠点は、私が考えていた日時以降に編集されたファイルの数を数えなければならないことです。日付と時刻を指定して、どのファイルをmvedおよびmvする必要があるかをコンピューターに認識させる方法はありますか?そうでない場合は、上記で記述したコマンドを完了して、これらのファイル名をmvにフィードし、すべてのmvを同じ場所に移動させるにはどうすればよいですか。

1
NeutronStar
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 

(実際に物を移動するには、「エコー」を削除します)

3
mreithub