参考答案:
#!/bin/bash
file_rm ()
{
if [ -f $1 ]
then
rm -f $1
fi
}
print_f_name() {
for f_name in `cat $1 |awk '{print $2}'`
do
l=`echo $f_name|wc -L`
f_own=`stat -c %U $f_name`
if [ $l -gt 8 ]
then
f_name=`echo ${f_name:0:8}-$f_own`
fi
echo $f_name
done
}
for f in dir file dir_time file_time sort_d sort_f sort_d2 sort_f2 tmp
do
file_rm /tmp/$f.txt
done
for f in `ls`;
do
[ -d $f ] && echo $f >> /tmp/dir.txt
[ -f $f ] && echo $f >> /tmp/file.txt
done
for d in `cat /tmp/dir.txt`
do
d_t=`stat -c %X $d`
echo $d_t $d >> /tmp/dir_time.txt
done
for file in `cat /tmp/file.txt`
do
f_t=`stat -c %X $file`
echo $f_t $file >> /tmp/file_time.txt
done
sort -nr /tmp/dir_time.txt > /tmp/sort_d.txt
sort -nr /tmp/file_time.txt > /tmp/sort_f.txt
print_f_name /tmp/sort_d.txt > /tmp/tmp.txt
print_f_name /tmp/sort_f.txt >> /tmp/tmp.txt
cat /tmp/tmp.txt |xargs |sed 's/ /,/g'
#!/bin/bash
rm -rf /tmp/final.txt /tmp/date-dir /tmp/date-file
[[ ! $# -eq 1 ]] && exit 1
[[ ! -d $1 ]] && exit 1
find $1 -type d|egrep -v "^$1$"|xargs -i stat --printf="%U %x %n\n" {}|awk -F '[ \t/]' '{print $2 " " $NF " " $1}'|sort -r > /tmp/date-dir
find $1 -type f|egrep -v "^$1$"|xargs -i stat --printf="%U %x %n\n" {}|awk -F '[ \t/]' '{print $2 " " $NF " " $1}'|sort -r > /tmp/date-file
#cat /tmp/date-dir|awk '{print $1}'|uniq > /tmp/dir_date
#cat /tmp/file-dir|awk '{print $1}'|uniq > /tmp/file_date
IFS_old=$IFS
IFS=$'\n'
for ddate in `cat /tmp/date-dir|awk '{print $1}'|uniq`
do
for dirline in `egrep "^$ddate" /tmp/date-dir|egrep -v egrep |sort -k 2`
do
dirname=`echo "$dirline"|awk '{print $2}'`
dirowner=`echo "$dirline"|awk '{print $3}'`
[ ${#dirname} -gt 8 ] && echo "${dirname:0:8}-$dirowner" >> /tmp/final.txt || echo $dirname >> /tmp/final.txt
done
done
for fdate in `cat /tmp/date-file|awk '{print $1}'|uniq`
do
for fileline in `egrep "^$fdate" /tmp/date-file|egrep -v egrep |sort -k 2`
do
filename=`echo "$fileline"|awk '{print $2}'`
fileowner=`echo "$fileline"|awk '{print $3}'`
[ ${#filename} -gt 8 ] && echo "${filename:0:8}-$fileowner" >> /tmp/final.txt || echo "$filename" >> /tmp/final.txt
done
done
cat /tmp/final.txt |tr "\n" " "
IFS=$IFS_old
编辑回复