我正在编写一个脚本,该脚本将检查所有具有主目录的用户的〜/中的特定文件。
我尝试了ls /home
并将cd插入用户的主目录,但是它给参数带来了太多错误。
username=$(ls /home)
cd /home/$username
cat file.json
除了json文件的输出外,我没有,但是即使用户有json文件,也无法提供json文件的输出。
现在我需要提取文件为file.json
的用户的用户名,我尝试使用grep
进行此操作,但是没有用。
files=$(find /home -name tilde.json -print)
echo "$files" >> jsons.txt
cat jsons.txt | grep /*/
答案 0 :(得分:3)
这将在file.json
目录下找到并列出所有名为/home
的文件:
find /home -name file.json -print
如果您无权访问所有用户的家庭目录,则可能需要将错误重定向到/dev/null
。
如果要打印所有这些文件的内容,请尝试:
find /home -name file.json -print -exec cat {} \;
要将搜索范围仅限制到/home
下的目录(即不是/home
本身,并且用户主目录中没有子目录),请使用:
find /home -mindepth 2 -maxdepth 2 -type f -name file.json -print -exec cat {} \;
我还在那里添加了-type
标志,以将搜索限制到文件,并排除可能碰巧共享该名称的所有目录。
答案 1 :(得分:0)
这将做:
private void button1_Click(object sender, EventArgs e)
{
if (on)
{
button1.Text = "yes on top";
IntPtr HwndTopmost = new IntPtr(-1);
SetWindowPos(this.Handle, HwndTopmost, 0, 0, 0, 0, TopmostFlags);
on = false;
}
else
{
button1.Text = "not on top";
IntPtr HwndTopmost = new IntPtr(-2);
SetWindowPos(this.Handle, HwndTopmost, 0, 0, 0, 0, TopmostFlags);
on = true;
}
}
它将打印
cat:'/home/*/file.json':没有此类文件或目录
关于标准错误(如果找不到)。
答案 2 :(得分:0)
那又怎么样:
cd /home
find . -name file.json -maxdepth 1 -exec cat {} \;
答案 3 :(得分:0)
假设/home
包含user1
和user2
。
然后您的cd
命令被调用为
cd /home/user1 user2
这不是您想要的,也不是cd
的有效语法,for
仅接受一个参数。您可能希望改为使用set -x
循环。
如果您无法预测此类扩展,则set +x
会启用跟踪,这可能会提供对实际运行命令的了解,并会在此处显示您的问题。 getent
再次将其关闭。
最后,请注意,并非所有用户的主目录都必须在主目录中。您可能要使用options: {
watermark: {
image: "//imgurlhere.jpg",
x: 20,
y: 10,
width: 53,
height: 60,
opacity: 0.25,
alignX: "left",
alignY: "top",
alignToChartArea: true,
position: "back"
},
}
或类似名称来查找所有用户主目录。