ProgramingTip

셸에서 여러 파일 이름 많이

bestdevel 2020. 11. 30. 19:23
반응형

셸에서 여러 파일 이름 많이


이 질문에 이미 답변이 있습니다.

나는 디렉토리 예에서 여러 개의 파일을 가지고 linux_file1.mp4, linux_file2.mp4등등. 어떻게 그렇게 이름이라는 것을, 쉘을 사용하여 운영하는 파일을 이동 file1.mp4, file2.mp4등등. 새 이름으로 필요한 파일이 약 30 개 있습니다.


나는 이런 종류의 mmv좋아합니다

mmv 'linux_*' '#1'

그러나 rename. 일반적으로 rename구문이 매우 다른 두 개의 명령이 있습니다. 하나는 Perl로 작성되고 다른 하나는 util-linux로 배포 아래에서 "perl rename"과 "util rename"으로 구분됩니다.

Perl 이름 :

rename 's/^linux_//' linux_*.mp4

cweiske가 지적했듯이.

util rename 사용 :

rename linux_ '' linux_*.mp4

어떤 이름이 어디에 어떻게 알 수 있습니까? 실행 해 rename -V. 버전이 util rename이면 버전 번호를 인쇄하고 perl rename이면 무해하게보고하고 알 수없는 옵션을 표시하고 사용법을 표시합니다.

이 중 하나 당신가없는 경우 rename또는 mmv하고 싶지 않아하거나 설치할 수 없습니다 당신은 여전히 평범한 구식 쉘 코드 로이 작업을 수행 할 수 있습니다 :

for file in linux_*.mp4 ; do mv "$file" "${file#linux_}" ; done

이 구문은 XPG4 이상을 준수하는 모든 POSIX 작동합니다.


$ rename 's/linux_//' linux_*.mp4

디렉토리 순회 를 사용하는 간단한 기본 방법 :

find -type f | xargs -I {} mv {} {}.txt

끝에 모든 .txt를 추가하여 파일의 이름을 바꿉니다.

그리고 송 신화를 사용 하는 것보다 일반적인 멋진 방법 :

find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:10}trump${f:4}'

@dtrckd 및 @Sorpigal 답변을 결합하여 디렉터리 내에서 파일 이름을 바꿀 수 있습니다.

for file in `find -name "linux_*.mp4"`; do mv "$file" "${file/linux_/}" ; done

참고 URL : https://stackoverflow.com/questions/6911301/rename-multiple-files-in-shell

반응형