Flatten Folders 명령을 사용하여 중복 파일의 이름 바꾸기

Flatten Folders 명령을 사용하여 중복 파일의 이름 바꾸기

이 명령은 하나 이상의 폴더 내용을 상위 폴더로 이동합니다. 단, 동일한 이름, 동일한 확장명을 가진 파일이 있으면 이동 중에 덮어쓰게 되는 파일이 있습니다.

find . - mindepth 2 -type f -exec mv "{}" . \; && fin d . - type d -empty -delete

중복된 파일 이름을 가진 파일을 덮어쓰지 않고 대신 (1), (2), (3) 등을 추가하도록 이 명령을 수정하려면 어떻게 해야 합니까?

답변1

numbered다음과 같은 옵션이 있습니다 mv.

  numbered, t
  make numbered backups

보세요MV 매뉴얼 페이지

이것을 패드 중 하나에 통합할 수 있습니다.

답변2

이 스크립트를 모든 파일을 저장할 최상위 디렉터리에 복사하고 실행 가능하게 만든 다음 실행하세요.

#!/bin/bash

## Get a list of all files
list=$(find . -mindepth 2 -type f -print)
nr=1

## Move all files that are unique
find . -mindepth 2 -type f -print0 | while IFS= read -r -d '' file; do
    mv -n $file ./
done
list=$(find . -mindepth 2 -type f -print)

## Checking which files need to be renamed
while [[ $list != '' ]] ; do
   ##Remaming the un-moved files to unique names and move the renamed files
   find . -mindepth 2 -type f -print0 | while IFS= read -r -d '' file; do
       current_file=$(basename $file)
       mv -n $file "./${nr}${current_file}"
   done
   ## Incrementing counter to prefix to file name
   nr=$((nr+1))
   list=$(find . -mindepth 2 -type f -print)
done

관련 정보