端末のフォルダをアルファベット順に並べ替える

端末のフォルダをアルファベット順に並べ替える

各ディレクトリに移動し、コマンドを実行するループを作成しました。ところで、フォルダ内の項目がアルファベット順ではないことがわかりました。

ループは次のとおりです。

#1/
#10/
#11/
#12/
#13/
#14/
#15/
#16/
#17/
#18/
#19/
#2/
#20/
#3/
#4/
#5/
#6/
#7/
#8/
#9/
...

ただし、次のことを行う必要があります。

#1/
#2/
#3/
#4/
...

私のスクリプト

for d in */; do echo "$d"; (cd "$d" && ls); done;

答え1

簡単な方法とフォルダを維持するには、桁数で区切ることができます。

for d in ?/;  do echo "$d"; (cd "$d" && ls); done
for d in ??/; do echo "$d"; (cd "$d" && ls); done

この種のコードの重複は間違いなく悪いです。ところでまた「#1 #2 #3をしなければならない」という以外にはまったく文脈を教えてくれませんでした。

または:

for d in {1..20}; do echo "$d"; (cd "$d" && ls); done

(最後にスラッシュを追加することもできます{1..20}/。)

これは、すべての番号がフォルダーにある場合にのみ意味があります。

答え2

それらはいアルファベット順に。アルファベット順には2後に表示されます。102後ろに表示されます1。はB後ろに表示されますAB。ここで欲しい数値アルファベット順ではなく、順次。

これを行うには、zshシェル(最新バージョンのmacosではデフォルトのユーザーシェルである必要があります)を使用していることを確認し、次を使用します。

for d in *(N/n); do (cd -- $d && print -r -- $d && ls); done

または、次のように短縮形式を使用します。

for d (*(N/n)) (cd -- $d && print -r -- $d && ls)

この(N/n)部分はグローバル予選:

  • N:一致するものがない場合は、エラーを報告する代わりに拡張機能が空です(nullglobこのglobのオプションを有効にする)。
  • /:その種類のファイルのみを選択目次
  • n:glob拡張の数値順を切り替えます(numericglobsortこのglobのオプションを有効にします)。

また、通常、その順序を好む場合は、numericglobsortglobal()をオンにしてから再set -o numericglobsort利用できますfor d in */; ...

とは*(/)まったく同じではありません*/*(/)あらゆる種類のファイルに拡張目次をクリックして*/ファイル形式を選択します。目次またはディレクトリへのシンボリックリンクそしてaを追加するので/(glob修飾子は後続の修飾子を適用可能にします。*/*(-/M)-後ろにMシンボリックリンクの確認と表示ディレクトリタイプのファイル(ここではシンボリックリンクの確認後/

答え3

次のことができます。

for d in $(find * -type d | sort -g); do echo "$d";(cd "$d" && ls);done;

関連情報