找回密码
 快速注册
搜索
查看: 33|回复: 1

Linux列出TeX文件

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-5-24 05:39 |阅读模式
  1. find / -type f -name "*.tex"
复制代码
当用户无权读取其它用户的某一目录时会打印permission denied
如果有很多用户就会打印很多行permission denied 把程序输出淹没了
解决办法见StackOverflow How can I exclude all "permission denied" messages from "find"?
在后面加2>/dev/null变为
  1. find / -type f -name "*.tex" 2>/dev/null
复制代码

解释:
File descriptor 2 represents standard error. (other special file descriptors include 0 for standard input and 1 for standard output).

因此可以用1>仅把standard error导向一个txt文件
  1. find / -type f -name "*.tex" 1>"tex hunting.txt"
复制代码
然后用wc -l输出文件的行数
  1. wc -l "tex hunting.txt"
复制代码

输出
7898 tex hunting.txt
说明有7898个tex文件

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-5-24 06:00
发现有很多都是TeXLive文档,如果排除这些文档,简便的方法是排除/usr/share下的文件
askubuntu.com/questions/1153513/
grep -v "grep" takes input line by line, and outputs only the lines in which grep does not appear.

要排除/usr/share/开头的行,您可以使用带有 -v(反向匹配)选项的 grep 命令。继续1#例子:
  1. find / -type f -name "*.tex" 2>/dev/null | grep -v "^/usr/share" >"tex hunting.txt"
复制代码

再运行wc -l tex*只剩下1418行了
sed进一步排除/usr/local/share开头的行
  1. sed -i '/^\/usr\/local\/share/d' 'tex hunting.txt'
复制代码

再运行wc -l tex*只剩下1299行了

例如/nfs-mounts/ucalegon.it.ox.ac.uk/web/users/ucalegon.it.ox.ac.uk/4/a/quee4127/public_html/automorphic/notes/notes.tex映射到网络路径notes.tex
/nfs-mounts/ucalegon.it.ox.ac.uk/web/users/ucalegon.it.ox.ac.uk/e/3/econ0506/public_html/Documents/Vitae/CV_Sedlacek.tex映射到网络路径CV_Sedlacek.tex

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:41

Powered by Discuz!

× 快速回复 返回顶部 返回列表