linux - 我们如何连接 Linux 中不包括目录的所有文件?

标签 linux

我正在尝试获取目录中所有文件的总行数。

我尝试执行以下操作:

cat * | wc -1

获取目录中的总行数,但它给了我一条消息,说有些文件是目录。 ('cat : some_dir: 是一个目录')

连接所有文件时如何排除目录?

最佳答案

要得到总和,您可以尝试下面的操作,获取每个文件的数量并对其求和

find . -type f -exec wc -l {} \; | awk '{ SUM += $1} END { print SUM }'

添加 -maxdepth 1 进一步跳过扫描

-type f 只过滤文件

这是测试结果:

$ seq 1 4 >file1

$ seq 1 5 >file2

$ cat file1
1
2
3
4

$ cat file2
1
2
3
4
5



$ find . -type f -exec wc -l {} \;
5 ./file2
4 ./file1

$ find . -type f -exec wc -l {} \; | awk '{ SUM += $1} END { print SUM }'
9

$ find . -type f -exec wc -l {} +
 5 ./file2
 4 ./file1
 9 total

$ find . -type f -exec wc -l {} + | awk 'END{print $1}'
9

关于linux - 我们如何连接 Linux 中不包括目录的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047622/

相关文章:

linux - 如果我在程序运行时删除其执行程序会怎样?

linux - 如何使用 sed 仅替换第二个匹配行

python - 从 python 中查找 linux 系统二进制文件的路径

linux - 如何运行 makefile 使其不会因错误退出并继续编译剩余文件?

java - 在 Centos 服务器上使 Java 1.7 默认

java - Bash 脚本无法将 Java 程序作为 cron 作业运行

c - 为什么这个输出来自 perror?

linux - EC2 上没有 C 编译器?

linux - 监控/dev/null 2>&1

linux - 使用 Spike 引导 Linux 时出现故障?