파일 이름이 중복 된 파일을 하나의 디렉토리에 복사하고 파일 이름을 자동으로 바꾸어 두 파일을 모두 유지하려면 어떻게해야합니까?


11

Windows OS에서 파일을 해당 이름의 파일이있는 디렉토리에 복사하면 다음을 수행 할 것인지 묻습니다.

  1. 파일을 복사하고 기존 파일을 바꾸거나 덮어 씁니다.
  2. 새 파일을 디렉토리에 복사 취소
  3. 파일을 복사하되 이름을 바꾸십시오 (예 : "filename-copy (1)")

우분투 에서이 작업을 수행 할 때 세 번째 옵션이 없습니다 (많은 매우 유용한 옵션입니다). 우분투에서 그렇게 할 수있는 방법이 있습니까?

답변:


17

불행히도 노틸러스에는 해당 옵션이 없습니다.

옵션 1 : 다른 파일 관리자

Dolphin 과 같은 다른 파일 관리자를 사용해 볼 수 있습니다.

돌고래 설치( Universe 저장소 필요 )

옵션 2 : 명령 줄

cp(1)백업 옵션과 함께 명령 행 프로그램 을 사용할 수도 있습니다 .

cp --backup -t DESTINATION SOURCE [SOURCE...]

이것은 매뉴얼 페이지에 설명 된 다른 옵션으로 제어 할 수있는 다음과 같은 효과가 있습니다 cp(1).

--backup[=CONTROL] ― 기존의 각 대상 파일을 백업합니다

-b--backup논쟁을 좋아 하지만 받아들이지 않음

-S, --suffix=SUFFIX― 일반적인 백업 접미사 무시

또는로 ~설정하지 않으면 백업 접미사는 입니다. 버전 제어 방법은 옵션 또는 환경 변수를 통해 선택할 수 있습니다 . 값은 다음과 같습니다.--suffixSIMPLE_BACKUP_SUFFIX--backupVERSION_CONTROL

  • none, off: 백업하지 마십시오 ( --backup제공된 경우에도 )
  • numbered, t: 번호가 매겨진 백업 만들기
  • existing, nil: 번호가 매겨진 백업이 있으면 번호가 매겨지고 그렇지 않으면 단순합니다
  • simple, never: 항상 간단한 백업 만들기

cp --backup=existing --suffix=.orig -t ~/Videos ~/Music/*

에 모든 파일이 복사 ~/Music됩니다 ~/Videos. 동일한 이름의 파일이 대상에 존재 .orig하면 해당 이름에 백업으로 추가 하여 이름 이 바뀝니다 . 백업과 동일한 이름을 가진 파일이 존재하는 경우, 백업을 추가 .1하거나 파일이 존재하는 경우 등으로 이름이 변경됩니다 .2. 그런 다음에 만 소스 파일이 대상으로 복사됩니다.

서브 디렉토리의 파일을 재귀 적으로 복사하려면 다음을 사용하십시오.

cp -R --backup=existing --suffix=.orig -t ~/Videos ~/Music

다른 파일 관리자를 사용할 것을 제안 해 주셔서 감사합니다. 불행히도 Thunar에는 내가 언급하는 옵션이 없습니다. 취소, 모두 건너 뛰기, 건너 뛰기, 바꾸기, 모두 바꾸기 만 있습니다. 돌고래를 시험해볼 것입니다.
heisenbergman

1
돌고래는이 : 위대한 작품
heisenbergman

두 가지를 사용해 주셔서 감사합니다. 찾은 결과에 따라 내 질문을 업데이트하겠습니다.
David Foerster '10

@heisenbergman, 안녕하세요 돌고래가 무엇을 의미합니까? 이름 바꾸기 옵션을 제공하지만 파일 이름을 하나씩 만 바꿀 수 있습니다. 불행히도 "모두에 적용"옵션은 이름 바꾸기 옵션과 함께 사용할 수 없습니다. 많은 양의 파일에는 이것이 쓸모가 없습니다. 이게 내 버전인가요? Dolphin을 사용하여 한 번에 모든 복식의 이름을 바 꾸었습니까 (Windows에서와 같이)?
Kvothe

1
@ n1k31t4 --backup=existing다시 설명을 읽으십시오 . 힌트 : 다음과 같은 경우 어떻게됩니까 touch foo bar; cp -v --backup=numbered foo bar; cp -v --backup=existing foo bar?
David Foerster

2

수퍼 유저에서 찾았습니다 .

#!/bin/bash
cp -vn "$1" "$2"/ || cp -vn "$1" "$2"/"${1##*/}"~"$(md5sum "$1" | cut -f1 -d' ')"

이름이 같은 파일은 이름에 md5sum이 추가 된 파일로 이름이 바뀝니다. "saveCopy"와 같은 파일 이름으로 파일을 저장하면 다음과 같이 파일 이름 find을 실행할 수 있습니다.

find . -name 'z*.jpg' -exec ./saveCopy {} /tmp/Extracted/ \;

이에 대한 자세한 내용은 링크를 참조하십시오.



0

이 스크립트를 최상위 디렉토리에 복사하고 실행 가능하게 한 후 실행하십시오.

#!/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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.