无法在bash中使用cat打开目录中的文件

时间:2018-12-06 08:56:09

标签: bash directory cat

伙计们,我正在尝试运行一个Shell脚本,该脚本会搜索目录,然后检查目录的文件以查看其是否可以找到特定名称。基本的东西。该目录名为labs,位于我的主目录下。文件没有文件扩展名。该脚本需要在我的主目录中运行。我正在尝试打开所有文件并搜索特定名称。这是脚本中导致我麻烦的一行:

ls labs | xargs cat | grep name

然后出现以下错误:

cat: cannot open name_of_file

对于我找到的每个文件。为什么在目录外不起作用,但是当我在里面时就可以了。我该如何运作?我的bash没有open命令。

1 个答案:

答案 0 :(得分:4)

查看ls labs的输出。这是裸文件名的列表-即没有目录前缀的文件名。这样您将得到如下输出:

file1
file2
file3

将其传递给xargs时,最终会运行以下命令:

cat file1 file2 file3

但是,由于您不在labs目录中(您在父目录中),因此这些文件名引用的文件不存在。您需要先将CD插入labs目录:

cd labs; ls | xargs cat | grep name

或使用类似find的命令返回完整路径:

find labs -type f | xargs cat | grep name