2011-08-08 18 views
0

我試圖寫一個腳本這將超過1天舊的文件移動到歸檔目錄其他的mtime。我用下面的命令find使用比FIND

for filename in `find /file_path/*.* -type f -mtime +1` 

這將失敗,因爲我的參數列表是太大,通過find處理。我得到了以下錯誤:

/usr/bin/find: arg list too long 

是否有可能在IF-ELSE語句中使用find?有人可以提供一些使用mtime的例子,然後在find

編輯:添加了環路的發現是其中的一部分。

+0

那是尾隨反引號複製粘貼錯誤?沒有它,它適用於我。另外,爲什麼'*。*',只是使用*。 – tjameson

+0

查找是for循環的一部分。編輯了這個問題。 – visakh

+0

@tjameson:使用'*。*''來避免不包含點的名稱。 –

回答

2
find /file_path -name '*.*' -mtime +1 -type f | 
while read filename 
do ...move operation... 
done 

那假設你的原代碼的方式接受它的處理空間等文件名, 並沒有明智的辦法做到在find行動的舉措。它還避免了超長參數列表的問題。

+0

+1閱讀。我到處使用它。 – tjameson

+0

感謝reply..it不是給一個參數列表長的錯誤......不過,好像在讀的子目錄also..my FILE_PATH所有文件是/職位/ 20110808 /日誌,但它也從以往的工作讀書/ 20110807,jobs/20110809 etc ..我應該增加深度嗎? – visakh

+0

@ user295338:指定'/ jobs/20110808/logs',如果那是你想要搜索的。 'find'看起來在你要求它看的地方。 –

2

爲什麼不使用find的-exec一部分?

1

如果你只是想CP文件,你可以使用

查找/ -name FILE_PATH -mtime +1型F 「。」 | xargs的-i MV {}在/ usr /本地/歸檔