私はファイル名を持っていることが多く、それは部分的なパスです。 "content/docs/file.xml".
ディレクトリ名とファイル名を別々に指定するために手動で名前を部分的に切り分けることなく、そのファイルを検索する簡単な方法はありますか?
find
がそのように機能していれば素晴らしいと思いますので、find content/docs/file.xml
を実行できますが、残念ながらうまくいきません。
何にでも一致することを示すには、ワイルドカード*
を渡します。また、*
をエスケープする必要があります。
find . -path \*content/docs/file.xml
または、パターンを引用符で囲みます。
find . -path "*content/docs/file.xml"
Manページで説明されているように、
$見つけます。 -name * .c -print
find:pathはexpressionの前になければなりません
これは、*。cがシェルによって展開され、findが実際に次のようなコマンドラインを受け取るためです。
見つけます。 -name bigram.c code.c frcode.c locate.c -print
そのコマンドはもちろん機能しません。このようにするのではなく、パターンを引用符で囲むか、ワイルドカードをエスケープする必要があります。
$見つけます。 -name\*。c -print
findに-wholenameオプションもありますfind $top_dir -wholename *string*
find /usr -wholename *in/abiw*
>/usr/bin/abiword
find . -type f | grep "content/docs/file.xml"
あるいは単に
locate content/docs/file.xml
例えば、アスタリスク/ワイルドカード(*
)をdir=“/apps/*/instance01/"
として使用している場所でファイルを検索するには、find ${dir} -name “*.jks”
を使用できます。このようにすべてのファイルを配列に配置します。
arr=(`find ${dir} -name “*.jks"`)
他の拡張子を持つファイルを取得したい場合は、次のように「または」を使用します。
-name "*.keystore" -o -name "*.jks" -o -name “*.p12"
は単一の文字列しか受け付けないため、-name
は「or」を使用します。
最後にすべてをこのように配列に配置します。
arr=(`find ${dir} -name "*.keystore" -o -name "*.jks" -o -name "*.p12"`)
部分パスではなくフルパスがある場合は、このように配列に配置するほうがはるかに簡単です。
arr=(“/Users/ajay/Documents/keystore_and_p12files/"*.{keystore,p12,jks})