Исключить системные записи с помощью "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 какой-нибудь способ сделать это, возможно, с помощью "ls" или "find"?
2 ответа
Вместо того ls Cygwin уже имеет lsattr для этой цели
$ lsattr /cygdrive/c
-hs--------- /cygdrive/c/$Recycle.Bin
------------ /cygdrive/c/cygwin64
lsattr: Device or resource busy while trying to open /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/System Volume Information
r----------- /cygdrive/c/Users
------------ /cygdrive/c/Windows
Если вам нужно что-то сделать с файлами с определенными атрибутами или без них, просто используйте первое поле для фильтрации. Например, для работы с элементами с системным атрибутом:
$ for d in $(2>/dev/null lsattr /cygdrive/c | grep -P '^..s' | cut -d' ' -f2); do echo $d; done
/cygdrive/c/$Recycle.Bin
/cygdrive/c/Recovery
/cygdrive/c/System
Вы также можете использовать --long чтобы получить длинные атрибуты
$ lsattr --long /cygdrive/c
/cygdrive/c/$Recycle.Bin     Hidden, System
/cygdrive/c/cygwin64         ---
lsattr: Device or resource busy while trying to open /cygdrive/c/pagefile.sys
/cygdrive/c/PerfLogs         ---
/cygdrive/c/Program Files    Readonly
/cygdrive/c/Program Files (x86) Readonly
/cygdrive/c/ProgramData      Hidden, Notindexed
/cygdrive/c/Python27         ---
/cygdrive/c/Recovery         Hidden, System, Notindexed
/cygdrive/c/System Volume Information Hidden, System
/cygdrive/c/Users            Readonly
/cygdrive/c/Windows          ---
                                        
                                    
                                В качестве обходного пути я используюfdинструмент:
      C:\> fd -d 1
PerfLogs
Program Files
Program Files (x86)
Users
Windows
cygwin64