./
folder_1
folder_2
folder_3
...
folder_46
最初の一致の場合 -> cd folder_* -> folder_1
しかし、最後の試合(folder_46)のために何をすべきか
ls
このような用途には適していません。ファイルのグロビングと配列を使用できます。
dirs=(folder_*/); cd "${dirs[@]: -1}"
グロブは字句順に展開されることが保証されています。配列スライスは、配列の最後のメンバーにアクセスします。
配列を自動的に削除する関数を作成できます。
cdl () { declare -a dirs=(${1:-folder_}*/); cd "${dirs[@]: -1}"; }
これはデフォルトで「folder_」のプレフィックスですが、別のプレフィックスを使用する引数を受け入れます:
cdl dirname-
declare
関数内では、変数を関数に対してローカルにします。
Bash 4.2 を使用している場合は、上記のようにスライスを使用する代わりに、最後の配列要素に直接アクセスできます。
cd "${dirs[-1]}"
これを試して
cd `ls -ld フォルダー_* | awk '{print $9}' | ソート | sed -e '$!d'`
ただし、フォルダーの名前は、folder_1、folder_2、... ではなく、folder_01、folder_02 にする必要があると思います。
cd $(find . -maxdepth 1 -type d -name "folder_*" | sort -t_ -k2 -n -r | head -1)
ディレクトリが多すぎる場合でも機能します(エラーで終了します。..で動作します。名前を変更する必要はありませls
ん。too many arguments
folder_1
folder_[any_number]
folder_1
folder_01
folder_001
cdlast() { cd "${!#}"; }
cdlast folder_*