폴더의 파일을 개별 폴더로 복사

폴더의 파일을 개별 폴더로 복사

이상하게 들릴 수도 있지만 내 HTPC의 경우 폴더의 각 개별 파일을 해당 하위 디렉터리(파일과 동일한 이름을 사용)로 이동해야 하도록 파일 저장 방법을 다시 정렬해야 합니다.

IE - 현재 디렉터리는 다음과 같습니다.

directory/
- a.file
- b.file
- c.file

나는 그것을 다음과 같이 바꾸고 싶습니다 :

directory/
- a/
-- a.file
- b/
-- b.file
- c/
-- c.file

나는 이것이 몹시 까다롭다고 생각하지 않지만 이상합니다. 이전에 누군가가 이 작업을 수행하는 것을 본 적이 없습니다. find 및 exec를 사용하여 수행할 수 있다고 생각하지만 저는 전투원이므로 이를 잘 이해할 수 없습니다. .

미리 감사드립니다(또는 시간을 내어 이 글을 읽어주셔서 감사합니다).

답변1

또 다른 해결책:

#!/usr/bin/env bash

Dir="/tmp/directory/"

for f in "$Dir"/*;
do
    SubDir="${f%.*}"
    mkdir -- "$SubDir"
    mv -- "${f}" "$SubDir/"
done

답변2

파일을 매개변수로 사용하는 쉘 스크립트를 작성하십시오.

#!/bin/bash

for filepath; do
  parentpath="${filepath%/*}"
  if [ "$parentpath" != "$filepath" ]; then # $file contains a /
    file="${filepath#"$parentpath"/}"
  else
    file="$filepath"
    parentpath=""
  fi
  filename="${file%.*}"
  if [ -z "$parentpath" ]; then
    mkdir -p "$filename" && mv "$file" "$filename"
  else
    mkdir -p "${parentpath}/$filename" &&
      mv "$filepath" "${parentpath}/$filename"
  fi
done

./script *.ext1 *.ext2 *.ext3너무 크지 않거나 find ... -exec ./script {} +개수가 많은 파일에 대해 이 스크립트를 호출할 수 있습니다.

관련 정보