ドットファイルのみが必要な場合:
find . -maxdepth 1 -type f -name '.*' -printf '%f\0'
テストでは、-name '.*'
ドット ファイルが選択されます。-name
グロブを受け入れるため.
、文字通りのピリオドを*
意味し、任意の文字の任意の数を意味します。
このアクション-printf '%f\0'
は、パスなしで NUL 区切りのファイル名を出力します。
名前の選択基準がより複雑になる場合、find は-regex
正規表現に基づいてファイルを選択するオファーも提供します。GNU find は、正規表現のいくつかの異なる方言を理解します。で選択できます-regextype
。サポートされている方言には、(emacs
デフォルト) posix-awk
、、、、およびが含まれます。posix-basic
posix-egrep
posix-extended
Mac OSX またはその他の BSD システム
BSDfind
は提供していません-printf
。その代わりに、これを試してください:
find . -maxdepth 1 -type f -name '.*' -exec basename {} \;
これは、空白、タブ、または改行などの難しい文字を含むものであっても、すべてのファイル名に安全であることに注意してください。
ドット ファイルを bash 配列に配置する
すべてのドット ファイルとディレクトリを配列に取得する場合は、次のように簡単です。
all=(.*).
これは、すべてのファイル名に対して安全です。
ディレクトリではなく、通常のファイルのみを取得する場合は、bash を使用します。
a=(); while IFS= read -r -d ''; do a+=("$(basename "$REPLY")"); done < <( find $HOME -maxdepth 1 -type f -name '.*' -print0 )
これは、すべてのファイル名に対しても安全です。