ファイルの種類に応じてディレクトリを複数のディレクトリに分割する

ファイルの種類に応じてディレクトリを複数のディレクトリに分割する

.txt、.TextGrid、.csvなど、さまざまな形式のファイルを含むディレクトリがあり、各ディレクトリに特定の形式のファイルが含まれるようにディレクトリを分割したいと思います。たとえば、.txt はディレクトリ、.TextGrid はディレクトリです。

ベストアンサー1

ファイルを繰り返します。各ファイルについて、ターゲットディレクトリの名前はファイル名に基づいて計算されます。ディレクトリがまだ存在しない場合は、ディレクトリが作成され、ファイルがそのディレクトリに移動されます。

私はあなたが拡張子によって決定されるファイルの「フォーマット」に満足していると仮定します。以下のコードは、拡張子のないファイル(例wibble:)やドットファイル(例.foo.bar:)を移動しません。

set -e                   # Abort on an error
for file in *.*; do      # Loop over file names that have an extension, excluding those that start with a dot
  dir="${file##*.}"      # Take the file's extension (we know there is one because the file name matches *.*)
  mkdir -p -- "$dir"     # Create the directory if it doesn't exist already
  mv -- "$file" "$dir/"  # Move the file into the directory
done

おすすめ記事