2012-03-15 55 views
-2

我有問題列出所選文件夾中的所有最新文件。情況是,服務器有15個文件夾以「備份」開始名稱。所以我需要使用循環列出所有最新文件(包括它們的名稱和大小)在這些文件夾中的列表。所以,我想出了這些代碼:使用循環在多個文件夾中找到今天的文件 - LINUX

#!/bin/sh 

cd/
for i in ls -d backup*; do (`ls -tr | tail -1` $i) ; done 

,並返回17行錯誤信息是:

./show_latest.sh: line 5: tmp: command not found 

需要從那些誰知道這個幫助。這裏解決 TQVM

問題是代碼:

#!/bin/sh 

for i in ls -d backup*; do du -sh $(find /$i -mtime -1 -print); done 
+1

您的代碼示例只有四行。錯誤在第5行。請向我們展示整個腳本'show_latest.sh'(或至少第五行!) – 2012-03-15 02:48:10

+0

剩下的就是註釋代碼。我沒有粘貼在這裏。感謝您的回覆 – softboxkid 2012-03-15 03:50:42

+0

問題**沒有解決,並說服自己在'do'和'du'之間貼上'echo $ i'。 – 2012-03-15 08:02:11

回答

0

你需要在你的ls反引號:

#!/bin/sh 

cd/
for i in `ls -d backup*`; do (`ls -tr | tail -1` $i) ; done 

或者,下面會給你在倒車時的排序順序的所有常規文件:

find . -type f -exec echo \'{}\' \;|xargs ls -tr 
+0

你的發現解決方案忽略了'ls -d backup *'的功能,即選擇所有以'backup'開頭的目錄。嘗試'find/-maxdepth 1 -type d -name「backup *」-print0 | xargs -0 -I {}查找{} -type f -print0 | xargs -0 ls -tr' – 2012-03-15 11:56:59

0

爲什麼你甚至需要lo運?您的第二個變體看起來會更好,因爲只有

du -sh $(find /backup* -mtime -1) 
相關問題