Command-Line

使用 mv,可以對 mv’ed 文件產生時間依賴性嗎?

  • May 22, 2014

假設我有一個特定的時間和日期。在此日期之前最後編輯的所有文件我想保留在目錄中,但自此日期以來已編輯的所有文件我想保存在mv其他地方。的man頁面mv沒有mv直接顯示這是可能的。我認為以下某種形式應該可以工作:

ls -t | head -n $number 

Where$number指定自我想到的時間和日期以來已編輯的文件數。然後我可以以某種方式將其提供mvmv這些文件(還沒有想到如何做到這一點)。這樣做的缺點是我必須計算自我想到的日期和時間以來已經編輯了多少文件。有沒有一種方法可以讓我只指定日期和時間,讓我的電腦找出需要mv編輯的文件以及mv它們?如果不是,那麼我將如何完成我上面編寫的命令以提供這些文件名以mv將它們全部mv編輯到同一位置?

find /path/to/dir -mtime +5 -exec mv {} /target/path/ ';'

會將所有/path/to/dir超過五天的文件移動到 /target/path。

你可以試試這個看看實際會執行什麼:

find /path/to/dir -mtime +5 -exec echo mv {} /target/path/ ';'

請注意,該-mtime參數檢查文件的修改時間。查看-ctime-atimefind 的手冊頁中了解更多詳細資訊。

如果您想以分鐘為單位指定您的時間,請使用-mmin-cmin之一-amin

要查找小於特定時間的文件,請使用-而不是+,例如-mmin -30.

另一種方法是使用xargs(它將使用每個輸入行執行一個命令;手冊頁):

find /path/to/dir -mtime +5|xargs -i echo mv {} /target/path 

(刪除“迴聲”以實際移動東西)

引用自:https://unix.stackexchange.com/questions/131402