如何在第一行打印包含“#!bin / bash”的文件的名称

时间:2015-10-14 13:44:29

标签: linux bash find line

我尝试在同一文件中的第一行(扩展名无关紧要)上打印包含#!bin/bash的文件的名称。

我这样做允许我在文件中的任何地方打印包含:#!bin/bash的文件的名称,但我只需要在第一行打印包含此链的文件的名称。 / p>

这是我做的:

find . -type f -name - grep -L '#!bin/bash' {} \; -printf '%f\n'> file.txt

1 个答案:

答案 0 :(得分:1)

如何使用struct ifaddrs *ifa, *ifa_tmp; char addr[50]; if (getifaddrs(&ifa) == -1) { perror("getifaddrs failed"); exit(1); } ifa_tmp = ifa; while (ifa_tmp) { if ((ifa_tmp->ifa_addr) && ((ifa_tmp->ifa_addr->sa_family == AF_INET) || (ifa_tmp->ifa_addr->sa_family == AF_INET6))) { if (ifa_tmp->ifa_addr->sa_family == AF_INET) { // create IPv4 string struct sockaddr_in *in = (struct sockaddr_in*) ifa_tmp->ifa_addr; inet_ntop(AF_INET, &in->sin_addr, addr, sizeof(addr)); } else { // AF_INET6 // create IPv6 string struct sockaddr_in6 *in6 = (struct sockaddr_in6*) ifa_tmp->ifa_addr; inet_ntop(AF_INET6, &in6->sin6_addr, addr, sizeof(addr)); } printf("name = %s\n", ifa_tmp->ifa_name); printf("addr = %s\n", addr); } ifa_tmp = ifa_tmp->ifa_next; } 呢?

awk

检查第一行是否包含此内容。如果是,则打印文件名。然后,无论之前发生了什么,它都会退出文件,因为它不再需要处理它。

使用awk 'NR==1 && ($0 == "#!bin/bash") {print FILENAME} {exit}' file find命令提供文件,只需说出awk,例如:

find /your/path -exec awk '...' {} \;