공백을 밑줄로 변경하려면 파일 이름을 바꾸세요.

공백을 밑줄로 변경하려면 파일 이름을 바꾸세요.

MS Windows에서 생성된 이름에 공백이 포함된 파일(mp3, wav, txt, doc)이 많이 있습니다. 예를 들어The file of whoever.doc

공백을 밑줄이나 점으로 바꾸어 한꺼번에 이름을 바꾸고 싶습니다.

답변1

쉘은 이를 쉽게 수행할 수 있습니다(이것은 운영자가 ksh93, zsh, bash, mksh, yash 또는 (일부 버전) busybox sh를 사용한다고 가정합니다 ${var//pattern/replacement}):

for file in *.doc *.mp3 *.wav *.txt
do
  mv -- "$file" "${file// /_}"
done

*.doc이름을 바꾸려는 파일과 일치하도록 ... glob을 변경하십시오 .

현재 파일 이름에 공백이 포함된 현재 디렉터리의 모든 파일 이름을 바꾸려면:

for file in *' '*
do
  mv -- "$file" "${file// /_}"
done

"clobber" 검사를 추가하는 것을 고려할 수도 있습니다.

for file in *' '*
do
  if [ -e "${file// /_}" ]
  then
    printf >&2 '%s\n' "Warning, skipping $file as the renamed version already exists"
    continue
  fi

  mv -- "$file" "${file// /_}"
done

또는 파일을 덮어쓰기 전에 사용자에게 메시지를 표시하는 옵션을 mv사용 하세요.-i

답변2

앞서 언급한 프로그램 외에도디톡스관심이 있을 수도 있습니다. 이런 일을 하도록 특별히 설계되었으며 공간 외에도 많은 일을 처리할 수 있습니다. 파일 이름에 움라우트, 괄호 또는 기타 이상한 내용이 없는 경우 다음은 디렉토리 트리 상단에서 실행하면 원하는 작업을 정확하게 수행해야 합니다.

detox -r .

이렇게 하면 디렉터리 이름도 수정되므로 UsersWindows 시스템의 디렉터리에서 실행하지 마세요. 그렇지 않으면 문제가 발생할 수 있습니다. Windows에서는 사용자 디렉터리의 특정 폴더에 특정 이름이 있어야 하며 이렇게 하면 해당 폴더가 변경됩니다. ) 폴더 이름).

답변3

예를 들어 다음과 같이 사용할 수 있습니다 sed.

mv -i "${original_file}" "$(echo "${original_file}" | sed 's/ /_/g')"

여기에 예가 있습니다.

이름에 공백이 포함된 파일을 만듭니다.

touch "/tmp/test file with spaces"

파일 이름을 바꿉니다.

mv -i \
"/tmp/test file with spaces" \
"$(echo "/tmp/test file with spaces" | sed 's/ /_/g')"

파일의 새 이름은 다음과 같습니다.

test_file_with_spaces

다음과 같이 동일한 작업을 수행할 수 있습니다 tr.

mv -i "${original_file}" "$(echo "${original_file}" | tr ' ' _)"

또는 Bash 하위 문자열 대체를 사용하십시오.

mv -i "${original_file}" "${original_file// /_}"

또는 rename다음 명령을 사용하십시오.

rename "s/ /_/g" "${original_file}"

답변4

Austin Hemmelgarn이 위에서 정답을 제시했습니다. 다음을 사용하세요.

    detox -r .

명령 미리보기를 실행하기 전에 detox다음 옵션을 사용하여 변경하십시오.-n

    detox -n -r .

detox시작점으로 홈 디렉터리에서 명령을 실행하고 숨겨진 파일과 디렉터리를 모두 제외하고 timeshift디렉터리와 같은 특정 디렉터리를 제외하려면 다음 형식을 사용합니다.

find ~ -path '*/\.*' -prune -o -path */timeshift/* -prune -o -exec detox -n {} \;

위 명령을 실제로 실행하려면 제거하십시오.-n

관련 정보