ファイル検索を実行するときにls変数をgrepに渡すことは、ディレクトリ内でのみ機能します。

ファイル検索を実行するときにls変数を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)"

関連情報