2014-01-17 58 views
0

Im新的腳本。我在一個目錄中有很多文件夾。我想寫一個腳本到每個文件夾,檢查舊的x天的文件,將它們移動到另一個位置,然後刪除。在Shell中導航文件夾

我已經嘗試像下面的代碼段來瀏覽文件夾。

for D in $(find /path/folder -mindepth 1 -maxdepth 1 -type d) ; do 

echo $D ; 

    find -type f -mtime +30 -exec {} s3cmd put s3://path \; 

s3cmd是上傳文件到S3

但它顯示了一個例外,因爲

發現:./folder/2013-07-29.tsv:權限被拒絕

我有也嘗試使用sudo。

在此先感謝

+0

使用ls -l cmd檢查文件夾的權限,以檢查用戶,組和其他人的權限。您還可以收集所有這些權限被拒絕的文件名,然後使用chmod命令更改所有這些文件的權限,然後執行所需的操作 – Jigar

+0

有太多的文件和文件夾,我也授予了權限 – user3205819

+0

您可以檢查權限'。/ folder/2013-07-29.tsv' – Incognito

回答

0

下面將從您的當前目錄中的全部文件(不是目錄)是比9mins老大於():

$ find . -type f -mmin -9 
./test/test1/file1_3 
./test/test3/file3_3 
./test/test2/file2_3 
$ 
$ find . -type f -mmin -9 -exec cp {} ../bak \; 
$ ls ../bak 
file1_3 file2_3 file3_3 

下「複製」他們。 ./bak

find . -type f -mmin -9 -exec cp {} ../bak \; 

你想天左右,你的建議,使用-mtime 10代替(較10天前)。

我懷疑你的錯誤可能與以下內容有關:-exec {} s3cmd。也就是說,你要求執行一個查找結果的命令(毫無疑問,./folder/2013-07-29.tsv是你的一個文件,而不是你想要執行的命令 - 它必須是s3cmd

如果是這樣的情況下,重新安排你的發現高管:

find . -type f -mtime -30 -exec s3cmd put {} s3://path \; 

你也可以只拉上找到的文件,內容如下:

find . -type f -mmin -9 | xargs zip ../bak/backup.zip 

這是通過結果的直接流媒體進行(通過xargs,所以會降低所需的磁盤空間比較移動或複製(然後zip,發送)。

+0

是的,錯誤是用-exec {} s3cmd。我已經按照你的建議更換了。有效。謝謝噸:-) – user3205819

+0

太棒了!隨時接受答案。 – wmorrison365