그래서 공백이 없도록 디렉토리의 모든 파일 이름을 바꾸려고했습니다. 저는 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}
(pattern
replace
Bash 매개변수 확장). 패턴이 /
(여기서 패턴은 /
+ ) 로 시작하면 Space
모든 항목이 대체됩니다. 그런 다음 대체된 공백을 사용하여 mv
파일 이름을 새 이름으로 바꿉니다 name
.
답변2
Perl의 이름이 다음으로 변경되었습니다.
rename 'y/ /_/' *