파일 형식에 따라 디렉터리를 여러 디렉터리로 분할

파일 형식에 따라 디렉터리를 여러 디렉터리로 분할

.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

관련 정보