Это довольно тривиально сawk
:
$ awk '{print $0,FILENAME}' File*.txt
Apple File1.txt
Orange File1.txt
Banana File1.txt
monday File2.txt
tuesday File2.txt
wednesday File2.txt
Если вам нужна табуляция, а не пробел между строкой ввода и именем файла, добавьте -v OFS='\t'
в строку команды -, чтобы установить разделитель полей вывода (OFS):
awk -v OFS='\t' '{print $0,FILENAME}' File*.txt
или используйте:
awk '{print $0 "\t" FILENAME}' File*.txt
Предполагается, что имена файлов не содержат =
символов. Если вы не можете гарантировать, что имена файлов не будут содержать символы =
, вы можете изменить это на:
awk '{print $0 "\t" substr(FILENAME, 3)}'./File*.txt
Хотя с GNU awk
, по крайней мере, вы затем получите предупреждения, если имя файла содержит байты, не образующие допустимые символы (, которые можно обойти, установив локаль наC
(с помощьюLC_ALL=C awk...
)хотя это также может иметь побочный эффект потенциального изменения языка других сообщений об ошибках, если таковые имеются ).
Вы можете выполнить пример командыls
hdfs dfs -ls /path
И из здесь это ожидаемый результат:
For a file returns stat on the file with the following format:
permissions number_of_replicas userid groupid filesize modification_date modification_time filename
For a directory it returns list of its direct children as in Unix. A directory is listed as:
permissions userid groupid modification_date modification_time dirname