は、同様にfind
で行うことができますが、私は、これはあなたがユニークな拡張子のカンマ区切りリストを割り当てたい場合は、あなたがこの
ext=$(for f in *.*; do echo "${f##*.}"; done | sort -u | paste -sd,)
echo $ext
csv,pdf,txt
に従うことができます
for f in *.*; do echo "${f##*.}"; done | sort -u
より簡単だと思います代わりに
ls
ls -1 *.* | rev | cut -d. -f1 | rev | sort -u | paste -sd,
rev/revが必要ですファイル名に複数のドットがある場合、拡張子が最後のドットの後ろであると仮定します。他のディレクトリの場合は、すべてのスクリプトで部分*.*
をdirpath/*.*
に変更するだけです。
あなたのご意見が分かりません。変数に代入しないと、デフォルトで出力に出力されます。スクリプトに変数としてディレクトリ名を渡したい場合は、あなたが持つサブディレクトリを持っている場合には、スクリプト
#!/bin/bash
# print unique extension in the directory passed as an argument, i.e.
ls -1 "$1"/*.* ...
にあなたの最初の引数になると仮定すると、$ 1をDIRPATHをスクリプトファイルにコードを入れて置き換えますスクリプト上記の拡張子は、ファイルタイプのみに制限し、同様にそれらを含めすべての独特の拡張子を取得するためにawk
でfind
を使用することができます
find . -maxdepth 1 -type f -name "*.*" | ...
こんにちは。このコードは動作しますが、例外が1つあります。たとえば、text.txt some.iso hw.pdf .hellou(ここでhellouはファイルを隠しています)のようなdir(およびsubdirs) "その例外をリストから除いているのだろうか?"だから、exteptionsはちょうど.txt、.iso、および.pdfになるだろうか? – Johnczek