我想使用 lsof 在文件夹中创建打开文件的列表。我正在使用macOS,但了解这对于* nix很常见。
在 man lsof 中,-Fn选项似乎最接近我想要的选项,但是我无法走得更远。我正在管道削减到仅文件名。这是我正在使用的命令:
$ lsof -Fn dir1 | cut -c2-
我期待
dir1/file1.txt
我要
32783
34
dir1/file1.txt
32785
3
dir1/.DS_Store
答案 0 :(得分:1)
您可以使用以下命令:
lsof your_dir | awk '{print $9}'
更新:
lsof your_dir | awk '{for(i=9;i<=NF;++i)print $i}'
这会将第9列打印到最后。
答案 1 :(得分:0)
请您尝试以下操作(因为没有发布任何样品,因此仅在我的测试框中进行了测试)。
lsof | awk 'match($0,/\/([^ ])*|\/([^$])*/){print substr($0,RSTART,RLENGTH)}'
编辑: :由于OP不需要名称中带有DOT的文件(我认为基本上是隐藏的文件),因此可以尝试关注。
lsof |
awk '
FNR>1 && match($0,/\/.*/){
val=substr($0,RSTART,RLENGTH)
if(val !~ /\/\./){
print val
}
val=""
}'