gpt4 book ai didi

linux - 将服务器主机名添加到 'find' 输出的每一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:35 25 4
gpt4 key购买 nike

我需要服务器上具有特定扩展名的所有文件的列表。我需要它来显示服务器主机名、文件大小和文件的绝对路径。

echo $(hostname); find $(pwd) / -iname *.jpg -exec du -s {} \;

echo $(hostname); find $(pwd) / -iname *.jpg|xargs du -s

差一点就到了:
joes_server
5473/home/joe/pics/sunset.jpg
8522/home/joe/pics/mountains.jpg

我不知道如何在查找输出的每一行中包含主机名。我尝试将主机名函数添加到 xargs 或 -exec 部分会导致错误,因为它会尝试将主机名应用于查找的输出。

有没有办法在查找输出的每一行中包含主机名?

当遍历许多服务器时,我希望得到如下输出:
joes_server 5473/home/joe/pics/sunset.jpg
joes_server 8522/home/joe/pics/mountains.jpg
ma​​rys_server 5398/home/mary/snapshots/background.jpg
janes_server 9642/home/jane/pictures/flowers.jpg

谢谢

最佳答案

find "$PWD" / -iname '*.jpg' -exec du -s {} + | sed "s/^/$(hostname): /"

(但是,正如@chepner 在下面指出的那样,同时拥有 /"$PWD" 是多余的;从 / 中查找最终将访问您当前的工作目录,这样您就可以离开 "$PWD"。或者如果您只想从您所在的位置开始查看,只需执行 find "$PWD" 并省略 /。)

变化:

  1. 使用 $PWD 而不是 $(pwd) - 当 bash 已经为您将命令放在参数中时,无需运行命令

  2. 引用!引用!引用!

  3. find -exec 上使用 + 而不是 ; 以便它将多个文件传递给每次调用;这样效率更高。如果你的find版本不支持这里的+,你可以使用-print0 | xargs -0 du -s.

  4. 将整个内容通过 sed 进行管道传输,以在每行的前面插入主机名。

关于linux - 将服务器主机名添加到 'find' 输出的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com