123456_1_2.mpg와 같은 이름의 파일 그룹을 123456.mpg로 바꾸고 싶습니다. 어떻게 터미널 명령을 사용하여이 작업을 수행 할 수 있습니까?linux에서 확장 기능을 사용하기 전에 여러 파일의 이름을 바꾸려면 어떻게합니까?
0
A
답변
1
사용 가능한 모든 파일을 반복하려면 ??????_?_?.mpg
형식의 파일 이름에 for
루프를 사용할 수 있습니다.
파일의 이름을 바꾸려면 외부 명령을 사용하지 않고 ${MYVAR%%pattern}
을 사용하여 문자열 시작 부분에서 가장 짧은 패턴 일치를 유지할 수 있습니다. 우리는 숫자의 첫 번째 순서하지만 모든 것을 제거하는 grep
을 사용할 수 있습니다
#!/bin/bash
shopt -s nullglob # do nothing if no matches found
for file in ??????_?_?.mpg; do
[[ -f $file ]] || continue # skip if not a regular file
new_file="${file%%_*}.mpg" # compose the new file name
echo mv "$file" "$new_file" # remove echo after testing
done
0
:
는이 같은 코드를 보여야했다. --interactive
깃발은 각 이동에 대해 확실한지 물어볼 것이므로 예상치 못한 일을하지 않도록 할 수 있습니다.
for file in *.mpg; do
mv --interactive "$file" "$(grep -o '^[0-9]\+' <<< "$file")".mpg
done
정규식 ^[0-9]\+
"은 번호로 시작하고 0 또는 그 이상의 숫자 뒤에 문자의 시퀀스"로 변환한다.
1
rename 's/_.*/.mpg/' *mpg
이 첫 번째 밑줄 및 MPG로 끝나는 모든 파일에 대한 MPG 파일 확장자 사이에 모든 것을 제거합니다
의+0
Up. 목적에 맞게 제작되었습니다. 기본적으로 파일을 덮어 쓰지 않습니다 (예 : 123456_1_1.mpg 및 123456_1_2.mpg). – masseyb
가능한 복제 [리눅스의 공백 문자 후에 모든 것을 제거 폴더에있는 모든 파일의 이름을 변경하는 방법?] (https://stackoverflow.com/questions/19642100/how-to-rename-all-files-in-a-folder-removing-everything-after-space-character-in) –