Bash
在目前目錄中查找與模式不匹配的文件
如何修改第二條指令中的模式,以排除嵌套目錄?(這樣
ls
只返回foo.mp4
,而不是 的內容bar:
)。$ ls * foo.mp4 foo.ogg bar: bar.ogg $ shopt -s extglob $ ls !(*.ogg) foo.mp4 bar: bar.ogg
PS:我用的是 OS X。
我在想什麼?!
$ ls *.!(ogg) foo.mp4
使用
find
而不是ls
.find
您可以排除一個或多個全域表達式。對於您的範例(和 OSX),您可以這樣做find * -depth 0 -type f ! -name '*.ogg' -ls
它產生類似的東西
ls -l
(僅在文件上,給定-type f
):66294163 0 -rw-r--r-- 1 tom wheel 0 Sep 9 20:12 foo.mp4
對於 OSX,第一列是 inode 值,然後是連結計數。 **
find
**沒有提供與以下列表一樣多的選項ls
:$ ls -l total 0 drwx------ 3 thomas wheel 102 Sep 9 15:33 com.apple.launchd.OFStJ79qtq drwx------ 3 thomas wheel 102 Sep 9 15:33 com.apple.launchd.VQsV1ae6bI drwx------ 3 thomas wheel 102 Sep 9 15:33 com.apple.launchd.e6HBMt2vnS drwx------ 3 thomas wheel 102 Sep 9 15:33 com.apple.launchd.he9U4OAIMI -rw-r--r-- 1 tom wheel 0 Sep 9 20:12 foo.mp4 -rw-r--r-- 1 tom wheel 0 Sep 9 20:12 foo.ogg
但可能很有用。