各ディレクトリに移動し、コマンドを実行するループを作成しました。ところで、フォルダ内の項目がアルファベット順ではないことがわかりました。
ループは次のとおりです。
#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
後に表示されます。10
は2
後ろに表示されます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のオプションを有効にします)。
また、通常、その順序を好む場合は、numericglobsort
global()をオンにしてから再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;