파일 이름의 공백을 밑줄로 바꾸는 방법

파일 이름의 공백을 밑줄로 바꾸는 방법

그래서 공백이 없도록 디렉토리의 모든 파일 이름을 바꾸려고했습니다. 저는 bash 스크립트를 작업 중인데 무엇을 해야할지 잘 모르겠습니다. 다양한 인용문과 이스케이프를 시도했지만 어떤 조합이 작동할지 잘 모르겠습니다.

#!/bin/bash
#change empty spaces in filenames to underlineos
lsarray="$(echo "$(pwd)""/*")"
for i in $lsarray
do
    if [[ $i == *" "* ]] 
    then
        line=$(echo $i | sed 's/ \+/\_/g')
        j=$(echo $i | sed 's/ \+/\\ /g')
        mv "$j" "$line"
        echo "$i"
        echo "$j"
        echo "$line"
        fi
done

mv에는 "특수 변수 확장"이 필요하므로 위에서는 큰따옴표를 사용했습니다. 어떤 조언이라도 감사하겠습니다.

답변1

bash모든 파일을 폴더에 넣습니다.

for name in *; do mv "$name" "${name// /_}"; done

${name/pattern/replace}(patternreplaceBash 매개변수 확장). 패턴이 /(여기서 패턴은 /+ ) 로 시작하면 Space모든 항목이 대체됩니다. 그런 다음 대체된 공백을 사용하여 mv파일 이름을 새 이름으로 바꿉니다 name.

답변2

Perl의 이름이 다음으로 변경되었습니다.

rename 'y/ /_/' *

관련 정보