for i in `ls -l`; do for j in `ls -l /abc`; do cat $j | grep $i;done;done;
我想用pcd中的文件搜索pwd中的每个文件名。请帮助我。
答案 0 :(得分:0)
我想你想要:
for filename in * ; do
grep -F -- "$filename" /abc/*
done
请注意,由于grep
的性质,如果您的任何文件名包含换行符,这将无法正常工作。 (幸运的是,这种情况非常罕见;但要记住这一点。)
答案 1 :(得分:0)
如果您的密码中的文件不能在其名称中包含换行符,那么这样的方法将是正确的方法:
ls |
awk '
NR==FNR{ files[$0]; next }
{
for (file in files) {
if ( index($0,file) ) {
print FILENAME, file
}
}
}
' - /abc/*
但是,就像你的grep方法一样,它很容易出错,因为这个文件名为""将匹配包含"然后"的行,并且如果它在目标文件中多次出现,则它会多次报告相同的匹配。如果有任何问题,请更新您的问题以显示一些示例输入和输出,以便我们为您提供帮助。
答案 2 :(得分:0)
不是一个编程问题..但是如何使用find?
find abc -type f -name $filename
..
即使上面的内容并不完全符合您的要求(对我来说有点不清楚),如果您已经有一个方法可以做到这一点,那么使用嵌套的ls
是非常疯狂的。 / p>
man find
如果您想了解有关find命令的更多信息。
要对您找到的文件执行更多操作,可以使用-exec标志为每个找到的文件执行某些操作。