ファイルのさまざまな種類の拡張子を受け入れ、その拡張子からディレクトリを生成するスクリプトがあります。
ただし、3つの拡張タイプのディレクトリを作成するだけです。 JPG/JPEG、DOC/DOCX およびその他のタイプ拡張子が「その他」のディレクトリ 1 つ。
これはこれまで私のスクリプトです。
#!/bin/bash
exts=$(ls | sed 's/^.*\.//' | sort -u)
for ext in $exts; do
mkdir $ext
mv -v *.$ext $ext/
done
ベストアンサー1
そしてzsh
:
#! /bin/zsh -
# speed things up by making mv builtin
zmodload zsh/files
# associative array giving the destination directory for each
# type of file
typeset -A dst=(
doc doc
docx doc
jpg jpeg
jpeg jpeg
)
# default for files with extensions not covered by $dst above or
# files without extension
default=miscellaneous
mkdir -p $dst $default || exit
for f (*(N.)) mv -i -- $f ${dst[$f:e:l]-$default}/
*(N.)
隠されていないすべてのアイテムに展開定期的な.
現在のディレクトリの files()(N
ullglob を使用するため、そのファイルがない場合は空のリストに展開されます)。$f:e:l
f
はileの拡張であり、小文字e
に変換されますl
(したがって、両方にFILE.DOCX
移動します)。file.docx
doc
${var-default}
標準/Bourne演算子で、設定がないdefault
場合まで拡張されます(ここでは連想配列要素に適用されます)。$var
zsh
の組み込み関数はmv
このオプション(GNU拡張)をサポートしていませんが、ループの代わりに-v
使用できます。zmv
autoload zmv
zmv -v '*(#qN.)' '${dst[$f:e:l]-$default}/$f'