"파일" 출력을 기준으로 파일을 폴더로 정렬

"파일" 출력을 기준으로 파일을 폴더로 정렬

확장자가 없는 수백만 개의 파일이 있고 이를 다른 폴더로 정렬하고 싶습니다. "파일"로 파일을 식별할 수 있지만 수동으로 처리할 수 있는 다양한 유형이 존재하게 됩니다. "파일"의 출력을 사용하여 "Word"를 grep한 다음 "office" 폴더로 이동하고 싶습니다. 단일 파일 형식에 대해 작성할 수 있지만 가지고 있는 모든 파일 형식에 대해서는 작성할 수 없습니다. 그렇다면 조건이 부족해요. 저는 시그윈을 사용하고 있습니다. 누구든지 이 작업을 수행하는 방법을 알려줄 수 있습니까? 감사합니다!

베드로

답변1

grep대신 쉘 케이스 구성에서 간단한 패턴 일치를 사용할 수 있습니다. 예를 들어:

#!/bin/sh

for f in *; do 

  [ -f "$f" ] || continue

  ftype="$(file -b -- "$f")"

  case $ftype in 
    *"shell script"*)
      echo mv -- "$f" scripts/
      ;;
    *"C source"*|*"C++ source"*) 
      echo mv -- "$f" src/
      ;;

    .
    .
    .

    *) printf '%s: skipping unrecognized type "%s"\n' "$f" "$ftype" >&2
      ;; 
  esac

done

대상 디렉터리가 존재해야 합니다(단, 조건을 사용하여 생성하는 것은 간단합니다 mkdir -p). echo올바른 일을 하고 있다는 확신이 들면 es를 제거하세요.

관련 정보