デフォルトでは、lsコマンドはファイル名だけでソートしますが、他のファイルタイプの前にディレクトリが表示されるようにします。Windowsエクスプローラーがタイプ列でソートする方法のように、ファイルを拡張子でソートしたい場合もあります。lsで似たようなことをする方法はありますか?
デフォルトでは、lsコマンドはファイル名だけでソートしますが、他のファイルタイプの前にディレクトリが表示されるようにします。Windowsエクスプローラーがタイプ列でソートする方法のように、ファイルを拡張子でソートしたい場合もあります。lsで似たようなことをする方法はありますか?
回答:
完全な答えは、上記の組み合わせに近いと思います。
-X (later --sort=extension)
少なくともFC3以降、Linuxでサポートされており、拡張子に基づいてソートされます。--group-directories-first
最近追加されました(おそらくFC8ですか?)。ただし、2つを組み合わせても機能しないようです(少なくともFC8では)。
主な問題は、単一のプライマリソートキーの使用にあるようです。それについての洞察については、このメーリングリストの説明を参照してください。
-X / --sort=extension
ても問題ありません--group-directories-first
。OPはFedora Core 8(2007年リリース)を参照しているため、このような問題は遠い過去にある可能性があります。
Linuxでは、
$ ls --group-directories-first
(man ls
あなたの友達です!)
gls --group-directories-first
Macでインストールする場合はGNU Core utils
自作オーバー
bashでは、これは一種の作業になります。
$ ls | rev | sort | rev
からman rev
:
The rev utility copies the specified files to the standard output,
reversing the order of characters in every line. If no files are speci-
fied, the standard input is read.
したがって、1。lsは、必要なフラグを使用して出力を提供します。2。各行が反転します。3。その後、ソートされます。
または、以下のように、もっと重要です。それらは、最後の文字、最後から2番目などでソートされます。たとえば、すべての.rtfファイルは、.saveファイルと、拡張子が「e」で終わる別のファイルの後に一緒にリストされます。その後、.pngファイルなどが続きます。これはls -lでも機能します。これは、拡張子が通常行の最後にあるためです(リンクの後にターゲットが続く「tmp @-> / home / jones / tmp」のような行がある場合を除く)。
$ ls | rev | sort | rev cslu1 ls.mp2 ls.mp3 ls.mp4 trees_110214-15 パット CSLU プロキシForm.doc フィナンビッド とんび 101209ssi.txt.save to_annotate_size Matas-time-by-week-integration2.rtf cyp3.rtf data-dir-scan.perl.doc.rtf whence-r21-numid.rtf platypus.rtf スクリーンショット2011-01-21 at 2.17.50 PM.png emacs print help.png ログ new_month_log 特殊な Google-ngram-critique.html perl_path.html nl DWE_BEN_89808.2.ann foo ドフー 100811_from_iMac_Documents_in_dock.zip to-palikir.zip tmp ファイルクリーンアップ バー データスキャンドキュメント cmp-mg-ann-numids finished_numids to_annotate_numids manls.ps Mike_address_ticket cyp2.out cyp3.out Locate-cyp.out manls.out DWE_BEN_89808.2.text tag2.txt l2.txt du-h-d3.txt finished_ann_numids_110407_1714.txt finished_all_numids_110407_1718.txt data-dir-scan.perl.doc.txt whence-r21-numid.txt finannid.txt toannid.txt b9-workspace-anndiff.txt tag.txt duh.txt do-mail.txt safextn.txt mg3longhdr.txt finished_numids.txt 41692-langnames.txt TimeAnnotationGuidelines.txt 41langs.txt thing4-homedir-links.txt bnlinks.txt grants.txt mata-file-reports.txt logx.txt logx b9-workspace-anndiff.txt〜 bnlinks.txt〜
ls -F
-F
を通してそれをパイプ場合)rev
&sort
(色を削除しませんでした-G
)。
Linuxを使用していない場合、
ls -l |sort -d -k 1.1,1.1r -k 9 |awk '{print $9}'
最初にディレクトリを並べ替える必要があります(間違っている場合は教えてください)。ただし、拡張子で並べ替えるわけではありません。それを行うには、awkステートメントを非常に忙しくする必要があります...
スペースを含む名前でも動作させるには、おそらくawkをsed -E -e 's/([^ ]+[ ]+){8}//'
9番目を印刷する代わりに最初の8つのフィールドを取り除くようなものに置き換えます
CLICOLOR
これを有効にした場合、色が削除されることに注意してください。
sed -E -e 's/([^ ]+[ ]+){8}//'
9番目を印刷する代わりに最初の8つのフィールドを取り除くようなものに置き換えます
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
.bashrc(linux)に次の行を追加しました
alias lx = "ls -X"
そのようにlxと入力すると、拡張子でソートされます。
ls -X
:)
--sort=extension
と--group-directories-first
(または唯一の--group-directories
)組み合わせがうまくいきます あなたのマシンでも一見の価値があります!=)