我在两个目录中都有日志文件,为简单起见,我将依次调用目录1和目录2。
假设用户输入了位于dir1中的file.log,我应该在-f后面加上dir1和dir2中除file.log之外的所有文件。有人可以帮我吗
ssh host 'find /path/to/a/log -maxdepth 1 -type f -name "file*" -name "*.log" ! -name "$1" -print0 -exec tail {} \;' > /home/pl-${node}.log
ssh host 'find /path/to/a/log -maxdepth 1 -type f -name "file*" -name "*.out" ! -name "$1" -print0 -exec tail {} \;' > /home/pl-${node}.out
Run Code Online (Sandbox Code Playgroud)
节点只是存储1和2的变量。当我输入./test file-1.log时,输出为:
pl-1.log
Oct 21 09:15 pl-1.out
Oct 21 09:15 pl-2.log
Oct 21 09:15 pl-2.out
Run Code Online (Sandbox Code Playgroud)
如您所见,即使我将file-1.log指定为不带参数,也将所有文件都带尾$1。
在将下面tail的所有文件dir1和dir2除外file.log:
shopt -s extglob
tail -f {dir1,dir2}/!(file.log)
Run Code Online (Sandbox Code Playgroud)
该手册提供了有关extglob(启用扩展模式匹配)的更多信息。
像这样的事情应该做到:
find . -type f ! -name "*dir1/file.log" -exec tail {} \;
Run Code Online (Sandbox Code Playgroud)
也就是说,使用find ... -exec tail {} \;添加额外条件,即文件不必命名为file.log.
如果文件名是命令行中的参数,我该如何使用 find 。例如 find 。!-类型 f -名称“$1”
像这样,例如:
ssh 主机“find /path/to/a/log -maxdepth 1 -type f -name 'file*.log' !-name \"$1\" -print0 -exec tail {} \;" > /home/pl-${node}.out
请注意,我使用的是find ".... -name \"$1\" ... "因为要“发送”变量,您需要双引号。
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |