使用“ls”或“find”排除系统条目

使用“ls”或“find”排除系统条目

比较 Cygwin:

$ ls -1 -N /cygdrive/c
$Recycle.Bin
cygwin64
Documents and Settings
pagefile.sys
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows

使用命令提示符:

> dir /A:-S C:
2018-12-08  10:14 AM    <DIR>          cygwin64
2009-07-13  09:20 PM    <DIR>          PerfLogs
2018-12-15  06:05 PM    <DIR>          Program Files
2018-12-15  05:21 PM    <DIR>          Program Files (x86)
2018-10-31  06:07 PM    <DIR>          ProgramData
2018-11-18  01:10 AM    <DIR>          Users
2018-11-09  08:18 AM    <DIR>          Windows

可以看出,命令提示符有一种方法可以排除系统项。Cygwin 有办法做到这一点吗?也许用lsfind

答案1

而不是lscygwin 已经有了lsattr以此目的

lsattr — 列出文件属性

描述

lsattr程序允许列出文件属性,即 DOS 属性、文件稀疏性、FS 级别加密和压缩状态,以及目录的区分大小写设置。

$ lsattr /cygdrive/c
-hs--------- /cygdrive/c/$Recycle.Bin
------------ /cygdrive/c/cygwin64
lsattr:尝试打开 /cygdrive/c/pagefile.sys 时设备或资源繁忙
------------ /cygdrive/c/PerfLogs
r----------- /cygdrive/c/Program Files
r----------- /cygdrive/c/Program Files (x86)
-h-------n-- /cygdrive/c/ProgramData
------------ /cygdrive/c/Python27
-hs------n-- /cygdrive/c/Recovery
-hs--------- /cygdrive/c/系统卷信息
r----------- /cygdrive/c/用户
------------ /cygdrive/c/Windows

如果你需要对具有或不具有特定属性的文件执行某些操作,那么只需使用第一个字段进行过滤. 例如对具有系统属性的项目进行操作:

$ for d in $(2>/dev/null lsattr /cygdrive/c | grep -P '^..s' | cut -d' ' -f2); \
回显“$d”;完成
/cygdrive/c/$Recycle.Bin
/cygdrive/c/恢复
/cygdrive/c/系统

您还可以使用它--long来获取长属性

$ lsattr --long /cygdrive/c
/cygdrive/c/$Recycle.Bin 隐藏,系统
/cygdrive/c/cygwin64 ---
lsattr:尝试打开 /cygdrive/c/pagefile.sys 时设备或资源繁忙
/cygdrive/c/PerfLogs ---
/cygdrive/c/Program Files 只读
/cygdrive/c/Program Files (x86) 只读
/cygdrive/c/ProgramData 隐藏,未编入索引
/cygdrive/c/Python27 ---
/cygdrive/c/Recovery 隐藏,系统,未索引
/cygdrive/c/System 卷信息隐藏,系统
/cygdrive/c/Users 只读
/cygdrive/c/Windows ---

请注意,Linux 本身也有一个类似名称的程序,但用于列出文件及其扩展属性

/snap$ lsattr
--------------e----- ./core20
--------------e----- ./README
--------------e----- ./docker
--------------e----- ./bin
--------------e----- ./auto-cpufreq
--------------e----- ./lxd
--------------e----- ./ccls
--------------e----- ./snapd
--------------e----- ./核心
--------------e----- ./core18
/快照$ ll
共 48
drwxr-xr-x 11 root root 4096 3月 7 21:53 ./
drwxr-xr-x 20 root root 4096 3月 16 15:55 ../
-r--r--r-- 1 root root 548 二月 2 00:29 自述文件
drwxr-xr-x 4 root root 4096 3月15日 03:46 auto-cpufreq/
drwxr-xr-x 2 root root 4096 3月17日 20:53 bin/
drwxr-xr-x 3 root root 4096 2月 23 09:19 ccls/
drwxr-xr-x 4 root root 4096 3月23日 11:36 核心/
drwxr-xr-x 4 root root 4096 二月 23 05:19 core18/
drwxr-xr-x 3 root root 4096 3月 7 21:52 core20/
drwxr-xr-x 3 root root 4096 2月22日 18:57 docker/
drwxr-xr-x 4 root root 4096 3月 17 20:53 lxd/
drwxr-xr-x 4 root root 4096 3月24日 04:17 snapd/

答案2

作为一种解决方法,我正在使用该fd工具:

C:\> fd -d 1
PerfLogs
Program Files
Program Files (x86)
Users
Windows
cygwin64

https://github.com/sharkdp/fd

相关内容