2012-03-15 52 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) 
相关问题