Shell / Perlで新しく作成されたディレクトリに条件付きでファイルを移動する方法

Shell / Perlで新しく作成されたディレクトリに条件付きでファイルを移動する方法

これは音楽ファイルとディレクトリの束です。

同時に、複数のディレクトリで次の作業を行う必要があります。

  1. ディレクトリに「.jpg」ファイルが含まれている場合は、新しいディレクトリ「Covers」を作成し、ファイルをそのディレクトリに移動します。
  2. ディレクトリに「.jpg」ファイルが含まれていない場合は、「Covers」ディレクトリを作成しないでください。
  3. ディレクトリにすでに「Covers」ディレクトリが含まれている場合は、「Covers」ディレクトリを作成しないでください。

ベストアンサー1

存在するbash

#!/bin/bash
shopt -s nullglob
for dir; do
    [[ -d $dir ]] || continue
    jpgs=( "${dir}"/*.jpg )
    if (( "${#jpgs[@]}" )); then
        [[ -d ${dir}/Covers ]] || mkdir "${dir}/Covers"
        # Avoiding race condition by not reusing the jpgs array
        for jpg in "${dir}"/*.jpg; do
            mv "$jpg" "${dir}/Covers"
        done
    fi
done

おすすめ記事