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