无法在 bash 中使用 cat 打开目录中的文件
Can't open files in directory using cat in bash
大家好,我正在尝试 运行 一个 shell 脚本,该脚本搜索一个目录,然后检查该目录的文件以查看它是否可以找到特定名称。基本的东西。该目录名为 labs,位于我的主目录下。这些文件没有文件扩展名。该脚本需要位于我的主目录中的 运行。我正在尝试打开所有文件并搜索特定名称。这是脚本中给我带来麻烦的一行:
ls labs | xargs cat | grep name
我收到以下错误:
cat: cannot open name_of_file
对于我找到的每个文件。为什么这在目录外不起作用,但当我在目录内时就可以了。我怎样才能让它发挥作用?我的 bash 没有打开命令。
查看 ls labs
的输出。它是一个裸文件名列表——也就是说,没有目录前缀的文件名。所以你得到如下输出:
file1
file2
file3
当您将其传递给 xargs
时,您最终会得到 运行 如下命令:
cat file1 file2 file3
但是由于您不在 labs
目录中(您在父目录中),这些文件名指的是不存在的文件。您需要先 cd 进入 labs
目录:
cd labs; ls | xargs cat | grep name
或者使用像 find
这样的命令 returns 完整路径:
find labs -type f | xargs cat | grep name
大家好,我正在尝试 运行 一个 shell 脚本,该脚本搜索一个目录,然后检查该目录的文件以查看它是否可以找到特定名称。基本的东西。该目录名为 labs,位于我的主目录下。这些文件没有文件扩展名。该脚本需要位于我的主目录中的 运行。我正在尝试打开所有文件并搜索特定名称。这是脚本中给我带来麻烦的一行:
ls labs | xargs cat | grep name
我收到以下错误:
cat: cannot open name_of_file
对于我找到的每个文件。为什么这在目录外不起作用,但当我在目录内时就可以了。我怎样才能让它发挥作用?我的 bash 没有打开命令。
查看 ls labs
的输出。它是一个裸文件名列表——也就是说,没有目录前缀的文件名。所以你得到如下输出:
file1
file2
file3
当您将其传递给 xargs
时,您最终会得到 运行 如下命令:
cat file1 file2 file3
但是由于您不在 labs
目录中(您在父目录中),这些文件名指的是不存在的文件。您需要先 cd 进入 labs
目录:
cd labs; ls | xargs cat | grep name
或者使用像 find
这样的命令 returns 完整路径:
find labs -type f | xargs cat | grep name