Linux 如何找到一个文件,然后将该文件及其内容存储为变量,以便在原始文件上运行操作?

Linux 如何找到一个文件,然后将该文件及其内容存储为变量,以便在原始文件上运行操作?,linux,bash,azure,scripting,grep,Linux,Bash,Azure,Scripting,Grep,目前,我这样做是为了尝试存储实际文件及其内容,find命令查找: find /Users/Documents -name "Myfile" > outputfile “Myfile”的内容是: This is my original file. 但是,当我执行操作时,例如cat outputfile,它会获取find命令的实际输出,而不是文件本身,并显示: /Users/Documents/Myfile 当我执行cat输出文件时,我正在等待: This is my

目前,我这样做是为了尝试存储实际文件及其内容,
find
命令查找:

find /Users/Documents -name "Myfile" > outputfile
“Myfile”的内容是:

This is my original file.
但是,当我执行操作时,例如
cat outputfile
,它会获取
find
命令的实际输出,而不是文件本身,并显示:

/Users/Documents/Myfile
当我执行
cat输出文件时,我正在等待:

This is my original file.

如何存储文件本身并对其执行操作?我的特定用例是使用
find
对我最近找到的文件执行静态分析。我不喜欢显示命令的输出。我想根据关键字查找一个文件,然后对原始文件执行扫描。

假设我的目录中有三个文件,分别为
a.txt
b.txt
、和
c.txt
,内容如下:

$ for file in *.txt; do echo "[$file]"; cat $file; done
[a.txt]
foo
[b.txt]
bar
[c.txt]
foobar
如果我对所有包含字符串
oo
的文件感兴趣,这将实现以下技巧:

$ grep -l "oo" *.txt > oo.out
$ cat oo.out
a.txt
c.txt
如果我想要包含
ba
的文件,它是相同的:

$ grep -l "ba" *.txt > ba.out
$ cat ba.out
b.txt
c.txt

使用
-l
选项仅列出与给定搜索条件匹配的文件名这是否回答了您的问题?我认为这不能回答问题。我尝试使用-l标志和-rl标志,它们产生了与我在问题中描述的相同的结果。我将使用一个图像进行更新,以演示如果可能,在您的图像中,请注意您为
echo
cat
命令编写了
$file.ps1
而不是
file1.ps1
。还请注意,在您的
-lr
示例中,正则表达式试图匹配
myfile
之前的星号字符(
*
)-这是您想要的吗?@i'i'i'i'i'i'i'可以通过存储文件名或文件内容作为起点来执行文件内容分析。你的问题现在清楚多了。不要再说像
如何传递这个文件及其内容之类的话了,因为它又变得浑浊了,因为不清楚“文件及其内容”是什么意思-听起来好像你想把文件名和文件内容传递给什么东西。如果您确保总是说
文件名
文件内容
,那么您的意图将始终是明确的。为此,我将进一步考虑它,尽管这两个示例没有抓住要点,当
cat ba.out
cat oo.out
-我不关心哪些文件包含此内容,我关心以某种方式命名的文件的实际内容。所以我想从你的例子来看,唯一的方法是通过for循环。所以,好吧,我仍然在根据你的评论理解你最初的问题。这是否正确:您想要的是找到包含特定正则表达式的文件,以某种方式收集它们,然后在第二步中对每个文件运行另一个命令?@i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i'i关于
唯一的方法是通过for循环
-是你想做的事。