执行文件搜索时将 ls 变量传递给 grep 仅适用于目录内

执行文件搜索时将 ls 变量传递给 grep 仅适用于目录内

我正在运行一个命令,用于查找文件夹中的最新文件,然后 grep 内容以查找匹配的模式。这是显示我遇到的问题的命令流程。

root@backup /]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)"
/bin/grep: <file_name>: No such file or directory
[root@backup /]# cd /var/log/folder/
[root@backup file_folder]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)"
sucessfully completed.

在第一个命令中,它找到该文件,但随后说没有这样的文件或目录。诡异的。然后,正如您所看到的,我在实际文件夹中运行了相同的命令并且它起作用了。我的变量有绝对路径,那么这里发生了什么?我检查了任何可能干扰的 grep 别名,但没有发现。如果我在使用变量之外单独运行命令,它可以工作,并且可以在文件文件夹之外工作。 (正如我所期望的)

[root@backup /]# grep -w 'sucessfully completed' /var/log/folder/file
sucessfully completed.

答案1

第一部分中缺少文件的目录名,请尝试

grep -w 'sucessfully completed.' "/var/log/folder/$(ls -1rt /var/log/folder | tail -n1)"

不要尝试...除非 /var/log/folder/ 中没有目录

grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder/* | tail -n1)"

相关内容