2011-08-29 41 views
3

我想知道是否有一種簡單而簡潔的方式來編寫將通過一系列目錄的shell腳本(,一個用於每個班級中的學生)確定是否在該目錄內有最後一天內修改過的任何文件,只有在這種情況下,該腳本纔會創建一個子目錄並將文件複製到那裏。因此,如果目錄在過去的24小時內沒有修改文件,它將保持不變。我最初的想法是這樣的:Shell腳本 - 查找今天修改的文件,創建目錄,並將它們移動到那裏

#!/bin/sh 
cd /path/people/ #this directory has multiple subdirectories 

for i in `ls` 
do 
    if find ./$i -mtime -1 -type f then 
    mkdir ./$i/updated_files 
    #code to copy the files to the newly created directory 
    fi 
done 

然而,這似乎創造所有子目錄已最近修改的文件,不只是那些/ updated_files。

回答

3

較重使用find將可能使你的工作變得更容易。類似於

find /path/people -mtime -1 -type f -printf "mkdir --parents %h/updated_files\n" | sort | uniq | sh 
+0

謝謝。此聲明適用於創建子文件夾:)如何合併一個聲明,將多個最近修改的文件複製到剛創建的文件夾中? **找到**給我一個持有發現文件列表的標誌? –

+0

沒關係,我想明白了:) –

+0

@Everaldo Aguiar:你能在這裏發佈解決方案嗎? – cili

1

問題是,假設找到命令將失敗,如果它什麼都沒發現。退出代碼爲零(成功),即使它找不到任何匹配。

喜歡的東西

UPDATEDFILES=`find ./$i -mtime -1 -type f` 
[ -z "$UPDATEDFILES" ] && continue 
mkdir ... 
cp ... 
... 
相關問題