GNU/Linux >> Linux の 問題 >  >> 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

Linux
  1. Linux –すべてがファイルですか?

  2. ファイルの一部を並べ替えますか?

  3. ファイルの行数を数えますか?

  1. C fopen と open

  2. ターミナルウィンドウからLinuxでファイルを作成するには?

  3. Bashを使用して整数をバイナリファイルに書き込む方法は?

  1. cp の代わりに ln を使用して、Linux で開いているが削除されたファイルを復元する方法は?

  2. cp -L 対 cp -H

  3. パスフレーズの代わりに秘密鍵を使用して ecryptfs ファイルを復号化する方法