不要在日志中打印

时间:2013-10-02 12:21:41

标签: linux shell find

我需要在文件树中打印一些信息。我需要列出.rns扩展名的每个文件。

我试试这个:

find ./ -name "*.rns" -print>>myLog.log

并且运行良好,但我想将系统日期放在日志中的每一行之前。像这样:

  

2013-10-02 14:02 - /volume1/file_1.rns

我试试这个但不起作用:

FECHA=`date '+%Y-%m-%d %H:%M'`
VAR_FILE_INFO="$FECHA + `find ./ -name "*.rns"` "
echo "$VAR_PRUEBA"

该代码返回:

2013-10-02 14:02 - /volume1/file_1.rns
/volume1/file_2.rns
/volume1/file_3.rns
/volume1/file_3.rns

日期只打印一次。

2 个答案:

答案 0 :(得分:3)

这个怎么样?

find ./ -name "*.rns" -printf "$FECHA %p\n" >> myLog.log

%p表示文件名,$FECHA是您刚刚存储的值。最后一个\n是获得一个新行(否则所有结果都会出现在同一行中)。

测试

$ FECHA=`date '+%Y-%m-%d %H:%M'`
$ find t/ -printf "$FECHA %p\n" >> mylog.log
$ cat mylog.log
2013-10-02 14:27 t/
2013-10-02 14:27 t/myfile
2013-10-02 14:27 t/mydir
2013-10-02 14:27 t/mydir/something

  

似乎不起作用。也许是因为我在Unix上测试而不是Linux测试:坏选项-printf

然后你可以这样做:

for file in $(find ./ -name "*.rns")
do
  echo "$FECHA $file" >> myLog.log
done

或者,更好:

while read -r file;
do
  echo "$FECHA $file" >> myLog.log
done < <(find ./ -name "*.rns")

答案 1 :(得分:0)

你可以尝试循环:

FECHA=`date '+%Y-%m-%d %H:%M'`
for f in `find ./ -name "*.rns"`; do
     echo "$FECHA - $f" >> myLog.log
done

有帮助吗?