【发布时间】:2017-05-20 08:22:49
【问题描述】:
我有一个如下所示的日志文件:
Jan 1 06:09:23 somefile.txt
Jan 2 12:18:27 somefile1.txt
Jan 3 04:16:00 somefile2.txt
我想找到每个文件并将每个文件的完整路径插入到这个文件中。我认为 find、awk 和 sed 的某种组合可以实现这一点,但到目前为止,我还没有提出一个可行的解决方案来更新文件,使其如下所示。
Jan 1 06:09:23 /path/to/file/somefile.txt
Jan 2 12:18:27 /path/to/file1/somefile1.txt
Jan 3 04:16:00 /path/to/file2/somefile2.txt
我已经能够删除文件名并毫无问题地找到文件,但到目前为止我想出的内容会写出一个新文件并丢失原始文件内容。我曾希望保持原始文件完好无损。
#!/bin/bash
#functions
getup(){
for i in `cat /home/work/uploadtmp`
do
find /home/uploads/*$i 2> /dev/null >> /home/work/upfile
done
}
listfile(){
while read line; do ls -lt $line; done < /home/work/upfile
}
#run functions
getup
listfile | awk '{print $1 " " $2 " " $3 " " $4}' | sort -k1M -k2 -k3 > /home/log/newfile
【问题讨论】:
-
...不要尝试以编程方式使用
ls:mywiki.wooledge.org/ParsingLs -
并且不要在循环中使用
>>——将>outfile放在外部效率更高循环,所以你只打开一次文件,而不是每次你想追加一行时重新打开它。 -
这是一个 GNU 系统吗?你有
readlink -f可用吗? -
哪个文件,究竟有问题的格式?
uploadtmp?还是您希望ls -lt的输出采用这种格式?