Linux

將 find 命令中的選項從一個字母組合到另一個字母

  • September 6, 2018

找到所有以 letter 開頭的文件到以 letter 開頭的文件/etc,這意味著從 a 到/etc .config 中的所有文件。.config``a``k``k

這些文件名將匹配文件名通配模式[a-k]*.config(“以任何字母開頭ak,並以文件名後綴結尾.config”)。

如果您只對位於 中的文件感興趣/etc,那麼以下命令將列出這些文件:

printf '%s\n' /etc/[a-k]*.config

該命令還將列出與該模式匹配的目錄和符號連結(等)。要將列表限制為僅正常文件(以及指向正常文件的符號連結),請使用循環:

for pathname in /etc/[a-k]*.config; do
   [ ! -f "$pathname" ] && continue
   printf '%s\n' "$pathname"
done

如果您有興趣查看子目錄/etc並將搜尋限制為僅包含正常文件,請使用find

find /etc -type f -name '[a-k]*.config'

這將在內部和下方查找具有與給定模式匹配的文件名/etc的正常文件 ( -type f)。


上述命令的結果將是一個以換行符分隔的文件路徑名列表。如果您計劃對文件進行進一步處理,則此列表可能不應該用作路徑名的中間列表。相反,使用上面的循環單獨處理文件,或者使用find它的-exec選項來處理它們。這是因為輸出中使用的分隔符換行符也是 Unix 文件名中的有效字元(當然,您很少看到它在使用中,但仍然如此)。

引用自:https://unix.stackexchange.com/questions/467083