1

私はシェルの専門家ではありませんが、親友の Google では見つからないコマンドが必要です。

ファイル名にスペースまたはウムラウトが含まれ、.pdf などの特定のタイプのすべてのファイルを出力するコマンドを探しています。すべてのサブディレクトリも検索する必要があります。

ご協力ありがとうございました!

4

1 に答える 1

1
shopt -s globstar nullglob
printf "%s\n" **/!(+([a-zA-Z0-9_.-])).pdf

そのパターンは、(英語の) 大文字または小文字、数字、および一部の句読点が「有効な」文字であることを指定します。ファイルに合わせて調整します。これらの文字だけで名前が付けられていないファイルはすべて一致します。

ハイフンはブラケット式 (範囲演算子) 内の特殊文字であることに注意してください。リテラル ハイフンと一致させるには、括弧内の最初または最後の文字にする必要があります。

これらのファイルで何かをしたい場合は、for ループを使用します。

for file in **/!(+([a-zA-Z0-9_.-])).pdf; do
    : do stuff with "$file" -- quotes are important
done
于 2013-06-19T09:46:04.890 に答える