UNIXで.NETベースを拡張する方法は?

UNIXで.NETベースを拡張する方法は?

UNIXベースの拡張で別のファイルを見つける方法。 vamsi.log-vamsi100.log、krishna.txt-krishna100.txt、super.csv...、rajat.jpeg...、kiran.xml-kiran100.xmlなど、それぞれ100個のファイルがあるとします。私の要件は、コマンドを実行するとフォルダにパターンがどれだけあるのかを知らせることです。また、拡張ごとに 1 つずつ提供する必要があります。この目標をどのように達成できますか?

ls -ltrすべてのファイルが提供されます。しかし、フォルダにいくつかの種類のファイルがあるかどうかを知る必要がありますか?

答え1

強打命令:for i in *; do echo "${i##*.}"; done | uniq -c

答え2

一方通行:

find . -maxdepth 1 -type f | sort -u -t. -k3 | wc -l

説明する:

  • find . -maxdepth 1 -type f:現在のディレクトリのすべての一般ファイルを探します。
  • sort -u -t. -k3: フィールド区切り文字を使用してフィールドの出力をソートし、同じ行の3最初の行のみを印刷します。.
  • wc -l:行数を計算します。

編集する

zshシェルを使用している場合は、以下を実行できます

echo ${(u)$(echo *(:e))} | wc -w

結果はおそらくケースより良いでしょう。その時点から名前が始まるファイルにも興味がfindある場合は、少なくともマルチポイントファイルが正しく考慮されます。.

echo ${(u)$(echo {.,}*(:e))} | wc -w

答え3

私は簡単なアプローチがls *.extensionトリックを実行すると思います:)

それらを計算するには、次のものを使用できます。ls *.extension -1 | wc -l

答え4

find . -maxdepth 1 -type f | awk -F. '{print $NF}' | sort | uniq -c

awk最後のアイテム.(「拡張」)以降のアイテムをキャッチするために使用されます。

sort各「拡張子」のすべての項目をグループ化します。

uniq -c行/拡張子あたりの重複数を表示します。

関連情報