如何用head linux命令读取所有文本文件?

时间:2017-03-05 10:10:23

标签: bash shell

我无法在.txt文件上阅读或应用任何其他命令,例如catstrings,因为它是不允许的。我需要读取名为flag.txt的文件,但此文件也在黑名单中。那么,有没有办法使用head命令读取* .txt?允许head命令。

blacklist=\
'flag\|<\|$\|"\|'"'"'\|'\
'cat\|tac\|*\|?\|less\|more\|pico\|nano\|edit\|hexdump\|xxd\|'\
'sed\|tail\|diff\|grep\|paste\|strings\|bas64\|sort\|uniq\|cut\|awk\|'\
'bzip\|gzip\|xz\|tar\|ar\|'\
'mv\|cp\|ln\|nl\|'\
'python\|perl\|sh\|cc\|g++\|php\|hd\|g++\|gcc\|curl\|tcp\|udp\|'\
'scp\|sftp\|wget\|nc\|netcat'

谢谢

3 个答案:

答案 0 :(得分:0)

你想要一些命令head *.txt的替代品吗?如果是这样,ls / findxargs会有所帮助,但它无法识别.txt文件,它会读取目录下的所有文件。

ls -1| xargs head

答案 1 :(得分:0)

您可以通过以下方式使用`backtick):

head `ls -1`
  

Backtick有一个非常特殊的含义。你输入的所有东西   在主命令

之前由shell评估(执行)反引号      

因此该命令将执行以下操作:

     

`ls -1` - 将以文件名

生成      

head - 将显示ls -1

中列出的文件的开头

有关反引号的更多信息,请参阅this answer

答案 2 :(得分:0)

如果您需要匹配flag.txt但不能同时使用*但不能使用字符flag的glob,则可以使用fl[a]g.txt。然后,要使用head打印整个文件,请使用-c并将其传递给文件大小:

head -c $(stat -c '%s' fl[a]g.txt) fl[a]g.txt

另一种方法是使用shell来读取文件:

while IFS=  read -r c; do echo $c; done < fl[a]g.txt

您也可以使用paste

paste fl[a]g.txt