Linux cli 将命令的管道输出到另一个命令

时间:2021-07-20 21:28:05

标签: bash command-line-interface tooltip

我正在使用 find 命令来搜索文件。有没有办法获取 find 命令的输出并将其传递给 vim?

$ > find . -name *.txt
./file1.txt
./file2.txt
./file3.txt
./file4.txt

是否有一种简单(简短)的方法

vim <some command>

在不输入的情况下抓取 file4.txt(或之前的文件之一)?

我正在寻找类似于 bash 中的 !! 命令的解决方案。

2 个答案:

答案 0 :(得分:1)

bash 内置命令 mapfile 可能正是您要找的。它将输出的读入一个数组。

mapfile -t files < <(find . -name *.txt)

需要从进程替换中重定向以避免子shell。

然后

  • 第一个文件在 "${files[0]}"
  • 最后一个文件在 "${files[-1]}"
  • 所有文件都是"${files[@]}"

使用declare -p files

检查数组

答案 1 :(得分:0)

如果要打开找到的文件,请使用命令替换:

vim $(find ...) -p

如果要打开find的输出,使用进程替换:

vim <(find ...)
相关问题