Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从hdfs dfs-ls命令的输出中打印文件名和文件修改日期_Linux_Bash_Shell_Scripting - Fatal编程技术网

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

Linux 从hdfs dfs-ls命令的输出中打印文件名和文件修改日期,linux,bash,shell,scripting,Linux,Bash,Shell,Scripting,我试图在HDFS上打印文件名及其修改日期,HDFS的问题是它不支持ls-l命令,所以当我使用 hdfs dfs-ls/directory\u 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 drw

我试图在HDFS上打印文件名及其修改日期,HDFS的问题是它不支持ls-l命令,所以当我使用
hdfs dfs-ls/directory\u 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;
但是没有任何帮助

请用awk试试-

hdfs dfs -ls /directory_path | grep -v 'Found' | awk '{ print $6,$8 }'
grep-v'Found'
用于忽略开头的
Found x items

感谢psny的帮助。

请尝试使用awk-

hdfs dfs -ls /directory_path | grep -v 'Found' | awk '{ print $6,$8 }'
grep-v'Found'
用于忽略开头的
Found x items


感谢psny的帮助。

1。在
$line
2之前,您错过了一个
echo
。您的字段是错误的:
awk'{print$6”“$8}'
谢谢devnull实际问题是echo命令,因为它给出了错误,谢谢:)@DPS,您想使用while循环的具体原因是什么?@JtheRocker没有具体原因,我是新的脚本编写者,所以不知道awk会直接处理ls1的输出。在
$line
2之前,您错过了一个
echo
。您的字段错误:
awk'{print$6”“$8}'
谢谢devnull实际问题是echo命令,因为它给出了错误,谢谢:)@DPS,您想使用while循环的具体原因是什么?@JtheRocker没有具体原因,我是一个新的脚本编写者,所以不知道awk会直接处理LSK的输出。请注意,awk仍在访问第一行“Found 6 items”,因此如果您还需要第二列,则必须删除第一行。一种方法是在awk语句之前执行“grep-v Found”。@psny:谢谢,我忘了这一点。补充!请注意,awk仍在访问第一行“Find 6 items”,因此如果您还需要第二列,则必须删除第一行。一种方法是在awk语句之前执行“grep-v Found”。@psny:谢谢,我忘了这一点。补充!