我正在搜索“searchstring”的多个目录,然后在每个$ file上运行脚本:
for file in `find $dir -name ${searchstring}'*'`;
do
echo $file >> $debug
script.sh $file >> $output
done
我的$ debug文件产生以下内容:
/root/0007_searchstring/out/filename_20120105_020000.log
/root/0006_searchstring/out/filename_20120105_010000.log
/root/0005_searchstring/out/filename_20120105_013000.log
(文件名是_yyyymmdd_hhmmss.log) ...
有没有办法按文件名或mktime查找订单?我应该先找管排序吗?创建一个数组,然后按照question进行排序?
答案 0 :(得分:1)
'ls -t'。
如果列表是相当静态的话,'sort -n'?
答案 1 :(得分:1)
如果您想忽略目录路径并只使用文件名,那么您应该可以使用:
for file in `find $dir -name ${searchstring}'*' | sort --field-separator=/ --key=4`;
答案 2 :(得分:1)
要按修改时间排序,您可以将stat与find:
一起使用$ find . -exec stat {} -c '%Y %n' \; | sort -n | cut -d ' ' -f 2
答案 3 :(得分:0)
您可以通过sort管道输出find以按文件名排序:
find $dir -name "${searchstring}*" | sort | while read file
do
echo "$file" >> $debug
script.sh "$file" >> $output
done