この質問にはすでに回答があります :フォルダを番号順に繰り返す
(6つの回答)
3年前に閉鎖されました。
Linux
(6つの回答)
3年前に閉鎖されました。
フォルダ内の各ファイルに基づいてインデックスを生成するスクリプトがあります。すべてのファイル名は拡張子付きの番号です。
ループを変更して番号順に処理するにはどうすればよいですか?
for file in xml/*.xml; do
...
done
承認された回答:
GNU sort
がある場合 \0
で制限を解除するオプションがあります できる区切り文字。このようにwhile
ループは、処理するためにソートされた順序でファイルの取得を開始します。 printf
を置き換えます 独自のカスタムロジックを使用したオプション。
shopt -s nullglob
printf '%s\0' xml/*.xml | sort -zV | while read -rd '' file; do
printf "%s\n" "$file"
done
shopt -u nullglob
nullglob
オプションは、xml
がない場合に、シェルが空のグロブを拡張しないようにすることです。 ファイルは現在のフォルダにあります。オプション-u
処理が完了したら、設定を解除します。
Tony Speightが正しく指摘しているように、シェルオプションをいじりたくない場合(たとえば、他の理由で有効になっている可能性があります)、サブシェルに設定してグロブ拡張を実行させることができます
( shopt -s nullglob; printf '%s\0' xml/*.xml ) | sort -zV | while read -rd '' file; do
printf "%s\n" "$file"
done