중복 파일이 포함된 폴더에서 고유 파일 이동

중복 파일이 포함된 폴더에서 고유 파일 이동

즉, 다음 형식의 폴더에 중복 파일이 있습니다.

file.ext
file(1).ext
file(2).ext
file(3).ext
otherfile.ext
otherfile(1).ext
otherfile(2).ext
...

다른 폴더 file.ext로 이동하고 싶습니다 . otherfile.ext에서 할 수 있나요 bash?

이게 도움이 될 거라고 생각했는데 awk?

답변1

존재하다bash:

shopt -s extglob # activates extended pattern matching features
mv !(*\(+([0-9])\)).ext /path/to/target/

정규식은 하나 이상의 숫자 (n).ext로 끝나지 않는 모든 파일과 일치합니다: .n+([0-9])

다음을 통해 확인할 수 있습니다 echo.

echo !(*\(+([0-9])\)).ext 

인쇄:

file.ext otherfile.ext

답변2

때에 따라 다르지. 이름에 포함된 파일을 (무시해야 한다고 가정할 수 있다면 다음과 같이 할 수 있습니다.

shopt -s extglob ## turns on fancy glob patterns
mv !(*\(*) /path/to/target

다음을 포함하는 다른 이름을 사용할 수 있거나 (해당 중복 파일을 이동해야 하는 경우 다음을 수행할 수 있습니다.

for f in *\(*; do 
    ## Does this file have an original?
    [[ -e "${f%%(*}.${f##*.}" ]] && 
        ## Move the original
        mv "${f%%(*}.${f##*.}" /path/to/target; 
done

답변3

다음과 같이 시도해 보세요.

$ ls  *ext | grep -P '[^)]\.ext' | xargs -iXXxxFILEXXxx mv XXxxFILEXXxx target/

grep이름에 괄호가 있는 파일은 필터링되고 xargs결과에 대해 명령이 실행됩니다. 파일 이름을 인수로 사용하는 보기 mv흉한 태그입니다 .XXxxFILEXXxxmv

관련 정보