从hdfs dfs -ls命令的输出中打印文件名和文件修改日期

时间:2013-08-15 11:18:01

标签: linux bash shell scripting

我想在HDFS上打印文件名及其修改日期,hdfs的问题是它不支持ls -l命令,所以当我使用 hdfs dfs -ls /directory_path这里是示例输出

Found 6 items
drwxr-xr-x - dps12 supergroup 0 2013-08-14 05:10 /data/PSG/LZ/FORECAST/201
drwxr-xr-x - dps12 supergroup 0 2013-08-15 05:13 /data/PSG/LZ/FORECAST/201
drwxr-xr-x - dps12 supergroup 0 2013-08-16 05:15 /data/PSG/LZ/FORECAST/203
drwxr-xr-x - dps12 supergroup 0 2013-07-30 20:32 /data/PSG/LZ/FORECAST/204
drwxr-xr-x - dps12 supergroup 0 2013-07-31 22:54 /data/PSG/LZ/FORECAST/205
drwxr-xr-x - dps12 supergroup 0 2013-08-13 04:15 /data/PSG/LZ/FORECAST/206

我需要的输出是

2013-08-14 /data/PSG/LZ/FORECAST/201
2013-08-15 /data/PSG/LZ/FORECAST/201
2013-08-16 /data/PSG/LZ/FORECAST/203
2013-07-30 /data/PSG/LZ/FORECAST/204
2013-07-31 /data/PSG/LZ/FORECAST/205
2013-08-13 /data/PSG/LZ/FORECAST/206

我知道对于专家来说,这绝对不是一件容易的事情,任何帮助或指示如何实现这一目标都会有很大的帮助..

我想过使用

hdfs dfs -ls /directory_path | while read line ; do $line|awk 'print $4  $6' ; done;

但它不是任何帮助

1 个答案:

答案 0 :(得分:4)

请尝试使用awk -

hdfs dfs -ls /directory_path | grep -v 'Found' | awk '{ print $6,$8 }'

grep -v 'Found'用于忽略开头的Found x items行。

感谢psny。