从给定的目录中,我使用以下命令列出所有文件和目录。
`hadoop dfs -lsr <path to hdfs directory>`
此列表列出文件和目录
drwxrwxrwx - root xyz 0 2014-10-09 18:39 <path to directory>
-rw-rw-rw- 3 root xyz 133998512 2015-04-08 03:36 <path to file>
我想有一个脚本,采取这些输出和过滤文件路径只。我相信只要看每一行的第一个字符就足够了drwxrwx和-rw rw rw rw-但是我不知道如何为它编写脚本。也许我需要学awk。
2条答案
按热度按时间rekjcdws1#
如果您想以分布式方式进行处理,您可能希望看到hadoop流。
如果您真的只想查找文件,并且hadoop的版本>=2.7(目前还没有发布),那么可以使用
find
. 根据这一问题,该功能已添加到版本中2.7.0
.另一种选择是将解决方案与
awk
已经提供的grep
```hadoop dfs -lsr | grep -v '^d'
hadoop dfs -lsr | grep -v '^d' | tr -s ' ' | cut -f 8 -d ' '
oymdgrw72#
是的,你可以用awk来做这个。
说明:awk将输入流划分为列。列的编号为1到$nf,即字段数。
$1表示第一列——drwxrwx thingy。此代码测试第一列是否以“d”开头。如果不是以“d”开头,它将进入块并打印整行($0表示整行,而$1、$2等表示行中的列)。
编辑:如果您只想打印文件名,请替换“打印$0;”使用“print$nf;”