簡介
你是否曾想過,如何在一個目錄中找到那些很久都沒有動過的檔案?無論你是在清理舊檔案、歸檔資料,還是檢查過期檔案,Linux 的find命令就是你的首選解決方案。在本技巧中,我們將展示如何使用一個簡單而強大的命令,依檔案新舊列出 Linux 中的檔案。
命令
find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;
透過這個命令,你可以根據檔案的最後修改日期找到檔案,依類型或名稱篩選檔案,並顯示檔案的詳細資訊。
逐項解析
1. /path/to/files
它指定要搜尋的目錄。請將其替換為你想瀏覽的實際資料夾路徑。
- 範例:如果你想搜尋你的相片庫,請使用
~/Pictures.
2. -type f
-type選項會指定要搜尋的項目類型。
f:僅指檔案(忽略目錄)。
3. -name '*.jpg'
它會根據檔案名稱或副檔名篩選結果。
- 範例:
*.jpg會尋找以.jpg. - 你可以將其替換為其他模式,例如
*.txt表示純文字檔案,*.log表示記錄檔。
4. -mtime +30
這是依檔案新舊篩選檔案的關鍵。
+30:尋找 30 天前最後修改過的檔案。- 將
30替換為任意數字,以符合你的需求:- 1 年:使用
-mtime +365. - 1 週:使用
-mtime +7.
- 1 年:使用
5. -exec ls -l {} \;
它告訴 Linux 如何處理找到的檔案。
-exec:對每個檔案執行一個命令。ls -l:列出每個檔案的詳細資訊(例如大小、權限、擁有者和最後修改日期)。{}:找到的每個檔案的預留位置。\;:表示命令結束。
專業提示
想在不執行ls -l的情況下測試命令?省略-exec部分:
find /path/to/files -type f -name '*.jpg' -mtime +30
這樣只會列出檔案路徑,不會顯示其他詳細資訊。
為什麼使用這個命令?
find命令用途非常廣泛,對系統維護任務非常有用:
- 釋放磁碟空間:找出並刪除舊檔案。
- 歸檔較早的資料:將數月或數年未動過的檔案移至備份儲存空間。
- 監控過期檔案:檢查重要目錄中的過期檔案。
實際範例
範例 1:尋找舊文件
搜尋.docx檔案。目標資料夾:Documents,尋找超過 90 天未修改的檔案:
find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;
範例 2:尋找超過 6 個月的大型檔案
尋找大於 100MB 的檔案,位置:/home/user,尋找超過 6 個月未修改的檔案:
find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
-size +100M:篩選大於 100MB 的檔案。ls -lh:以人類可讀的格式顯示檔案大小(例如 MB、GB)。
範例 3:搜尋舊 PDF 檔案
尋找.pdf檔案,位置:/home/user/Downloads,尋找最近一年內未修改的檔案:
find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;
範例 4:尋找最近修改過的檔案
搜尋.txt檔案,尋找最近 7 天內修改過的檔案,位置:/var/www:
find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
-mtime -7:尋找最近 7 天內修改過的檔案。
範例 5:刪除舊暫存檔案
刪除以下位置的檔案:/tmp中超過 30 天未修改的檔案:
find /tmp -type f -mtime +30 -exec rm {} \;
rm:刪除檔案。- 警告:請謹慎使用,因為這會永久刪除檔案。
範例 6:歸檔舊媒體檔案
移動.mp4檔案(超過 60 天),來源資料夾:~/Videos,目標為歸檔資料夾:
find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
mv:將檔案移至指定的資料夾。
範例 7:尋找在特定時間範圍內建立的檔案
搜尋.log檔案,尋找 30 到 60 天前建立的檔案,位置:/var/log:
find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
-mtime +30:超過 30 天的檔案。-mtime -60:最近 60 天內修改過的檔案。
範例 8:尋找超過 1 週的空白檔案
尋找以下位置的空白檔案:/home/user中最近一週未修改的檔案:
find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
-empty:篩選大小為零的檔案。
範例 9:依存取時間搜尋檔案
尋找.png檔案,位置:/var/www/html,尋找最近 90 天內未存取過的檔案:
find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
-atime:依存取時間而非修改時間篩選檔案。
範例 10:尋找最近建立的檔案
尋找以下位置的檔案:/home/user中最近 3 天內建立的檔案:
find /home/user -type f -ctime -3 -exec ls -l {} \;
-ctime:依建立時間篩選檔案。
範例 11:依權限尋找檔案
搜尋以下位置的檔案:/etc中具有特定權限的檔案(例如,可被其他人寫入):
find /etc -type f -perm /o+w -exec ls -l {} \;
-perm /o+w:尋找可被其他人寫入的檔案。
範例 12:尋找最近一小時內修改過的檔案
尋找以下位置中最近一小時內修改過的檔案:/home/user/Documents:
find ~/Documents -type f -mmin -60 -exec ls -l {} \;
-mmin -60:篩選最近 60 分鐘內修改過的檔案。
範例 13:尋找具有特定擁有權的檔案
搜尋屬於以下使用者的檔案:jose,位置:/var/log中超過 90 天未修改的檔案:
find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
-user jose:篩選屬於指定使用者的檔案。
範例 14:排除特定目錄
尋找.jpg檔案,位置:/home/user中超過 30 天的,排除Downloads資料夾:
find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
-not -path:排除指定目錄中的檔案。
範例 15:尋找在特定日期修改過的檔案
搜尋以下位置中正好 10 天前修改過的檔案:/home/user:
find /home/user -type f -mtime 10 -exec ls -l {} \;
-mtime 10:尋找正好 10 天前修改過的檔案。
範例 16:尋找具有特定副檔名的檔案
搜尋.zip和.tar.gz檔案,尋找超過 60 天的檔案,位置:/backups:
find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
\( -name '*.zip' -o -name '*.tar.gz' \):搜尋多個檔案副檔名。
結論
Linux 的find命令是根據檔案的新舊、類型和名稱管理檔案的強大工具。無論你是在清理磁碟空間、歸檔舊資料,還是監控過期檔案,此命令都能讓你完全掌控自己的目錄。
今天就試試它,讓你的 Linux 技能更上一層樓!