我想檢查我的/proc
中存在的所有關鍵文件。但是/proc
有與運行進程相對應的無數目錄。我不希望這些目錄被列出。所有這些目錄的名字只包含數字。正如我在正則表達式窮人,誰能告訴我什麼regex
,我需要發送到ls
,使其不是搜索其名稱中的數字的文件/目錄?列出所有不以數字開頭的文件
UPDATE:感謝所有答覆!但我很想擁有一個ls
獨立解決方案,而不是ls+grep
解決方案。迄今爲止提供的ls
單獨解決方案似乎並不奏效!
我想檢查我的/proc
中存在的所有關鍵文件。但是/proc
有與運行進程相對應的無數目錄。我不希望這些目錄被列出。所有這些目錄的名字只包含數字。正如我在正則表達式窮人,誰能告訴我什麼regex
,我需要發送到ls
,使其不是搜索其名稱中的數字的文件/目錄?列出所有不以數字開頭的文件
UPDATE:感謝所有答覆!但我很想擁有一個ls
獨立解決方案,而不是ls+grep
解決方案。迄今爲止提供的ls
單獨解決方案似乎並不奏效!
在/proc
所有文件和目錄不包含數字(換句話說,排除處理目錄):
ls -d /proc/[^0-9]*
的所有文件下遞歸地/proc
不以數字開頭:
find /proc -regex '.*/[0-9].*' -prune -o -print
但是這也將排除中的數字文件子目錄(例如/proc/foo/bar/123
)。如果你想排除只有頂級文件的數字:
find /proc -regex '/proc/[0-9].*' -prune -o -print
再次堅持!這是否意味着touch /proc/123
等創建的任何regular files將被排除?理論上是的,但我認爲你不能這樣做。嘗試創建一個不存在的PID文件:
$ sudo touch /proc/123
touch: cannot touch `/proc/123': No such file or directory
使用grep與-v
告訴它打印所有行不匹配的模式。
ls /proc | grep -v '[0-9+]'
繼正則表達式中的所有字符匹配除了數字
^[\D]+?$
希望它能幫助!
ls /proc | grep -v -E '[0-9]+'
你不需要的grep,只是ls
:
ls -ad /proc/[^0-9]*
如果你想搜索整個子目錄結構查找功能
:
find /proc/ -type f -regex "[^0-9]*" -print
我認爲你的'ls'解決方案有些問題。它列出了以數字開頭的文件夾內的所有文件!我不想要以數字開頭的目錄! – 2012-03-01 11:35:30
即使是「find」解決方案也會衝入名稱中帶有數字的文件夾!我錯過了什麼? – 2012-03-01 11:46:00
-1除了@Stacker之外,有沒有人試過這些命令?'ls'列出正確的文件,還列出'/ proc/* /'的目錄內容。 'find'清楚地列出了所有的進程目錄及其文件。 – l0b0 2012-03-01 12:07:41
對於着想完成。您可以將Mithandir的答案與find一起應用。
find . -name "[^0-9]*" -type f
'ls -d/proc/[^ 0-9] *'精確地列出了包含數字的目錄(我不想:()即處理目錄!這裏也有些東西可疑! – 2012-03-01 14:58:34
@Stacker:你在哪個操作系統上?ls --version'返回的是什麼?我在兩個不同的發行版上運行了這個(至少在一臺機器上是Ubuntu 64位和Linux Mint 64位,GNU'ls' 8.5),它只顯示文件和目錄*不帶*號,從'/ proc/acpi'到'/ proc/zoneinfo'。*'ls'是臭名昭着的不可移植的*,所以它可能只是因爲'-d'在你的版本中做了完全不同的事情 – l0b0 2012-03-02 18:44:11
哎呀!你是對的!我在你的Ubuntu 11.10上運行了你的命令,它工作得很好!我在AIX 6.1上,有一天(再次確認),它打破了!!我很困惑,爲什麼!在兩個系統上搜索'-d'幾乎給出了類似的解釋,即目錄將被視爲任何其他文件!爲什麼這不相同? – 2012-03-03 06:51:25