相対パス全体の代わりにファイル名に基づいてサブディレクトリglobをソートする方法

相対パス全体の代わりにファイル名に基づいてサブディレクトリglobをソートする方法

次のファイルツリーが与えられた場合:

subdirFoo/2019-06-01-blah.ext
subdirFoo/2019-06-07-blah.ext
subdirFoo/2019-05-02-blah.ext
subdirBar/2019-06-03-blah.ext
subdirBar/2019-05-05-blah.ext
subdirBar/2019-05-13-blah.ext

このファイルを繰り返してパラメータとして渡したいのですが、somecommandフルパスではなくファイル名でソートされた順序で繰り返したいと思います。

通常、globはアルファベット順にソートされますが、次の順序でソートされます。

subdirBar/2019-05-05-blah.ext
subdirBar/2019-05-13-blah.ext
subdirBar/2019-06-03-blah.ext
subdirFoo/2019-05-02-blah.ext
subdirFoo/2019-06-01-blah.ext
subdirFoo/2019-06-07-blah.ext

つまり、ソート時にサブディレクトリが考慮されますが、これは私が望むものではありません。

globをファイル名だけでソートしながら、コマンドがファイルを正しく参照できるようにループのサブディレクトリを維持するにはどうすればよいですか?つまり、ファイルパスが正しくないか欠落しているため、サブディレクトリの削除は機能しません。

つまり、次の順序でソートする必要があります。

subdirFoo/2019-05-02-blah.ext
subdirBar/2019-05-05-blah.ext
subdirBar/2019-05-13-blah.ext
subdirFoo/2019-06-01-blah.ext
subdirBar/2019-06-03-blah.ext
subdirFoo/2019-06-07-blah.ext

zshの解決策が好まれますが、bashやshも問題ありません。

ベストアンサー1

sortフィールド区切り文字を/2番目のフィールドに設定してソートする必要があります。

おすすめ記事