![폴더 이름 끝의 공백을 제거하는 방법은 무엇입니까?](https://linux55.com/image/193349/%ED%8F%B4%EB%8D%94%20%EC%9D%B4%EB%A6%84%20%EB%81%9D%EC%9D%98%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
폴더 이름 끝의 공백을 제거하고 싶습니다.
"Project1"이라는 폴더가 있고 그 안에 "Exercise1"이라는 또 다른 폴더가 있습니다.
후행 공백을 제거하고 후행 공백만 제거하는 스크립트를 사용하고 싶습니다.
제 표현이 맞는지는 모르겠습니다.
미리 감사드리며, 좋은 밤 되세요.
명령어를 입력했어요/bin/ls -l | od -c
root@debian:~$ /bin/ls -l | od -c
0000000 t o t a l 3 2 \n d r w x r - x
0000020 r - x 2 k a b i a k a b i
0000040 a 4 0 9 6 j u i l . 2 0
0000060 1 0 : 2 6 B u r e a u \n d r w
0000100 x r - x r - x 7 k a b i a
0000120 k a b i a 4 0 9 6 j u i l .
0000140 2 2 1 7 : 4 6 D o c u m e
0000160 n t s \n d r w x r - x r - x 2
0000200 k a b i a k a b i a 4 0 9
0000220 6 j u i l . 2 2 1 9 : 2 6
0000240 I m a g e s \n d r w x r - x r
0000260 - x 2 k a b i a k a b i a
0000300 4 0 9 6 j u i l . 2 0 1
0000320 0 : 2 6 M o d 303 250 l e s \n d r
0000340 w x r - x r - x 2 k a b i a
0000360 k a b i a 4 0 9 6 j u i l
0000400 . 2 0 1 0 : 2 6 M u s i q
0000420 u e \n d r w x r - x r - x 2
0000440 k a b i a k a b i a 4 0 9 6
0000460 j u i l . 2 0 1 0 : 2 6
0000500 P u b l i c \n d r w x r - x r -
0000520 x 2 k a b i a k a b i a
0000540 4 0 9 6 j u i l . 2 0 1 0
0000560 : 2 6 T 303 251 l 303 251 c h a r g e
0000600 m e n t s \n d r w x r - x r - x
0000620 2 k a b i a k a b i a 4
0000640 0 9 6 j u i l . 2 0 1 0 :
0000660 2 6 V i d 303 251 o s \n
0000673
답변1
그리고 zsh
:
autoload zmv # best in ~/.zshrc
zmv -n '**/*[[:space:]]' '${f%%[[:space:]]#}'
( 만족스러우면 -n
시험 실행을 위해 제거 )
숨겨지지 않은 모든 파일이나 디렉터리의 끝에서 후행 공백 문자가 제거됩니다. (#q/)
디렉토리로만 제한하려면 패턴 매개변수에 추가하세요. 또는 (#qD)
숨겨진 파일도 처리할 수 있습니다.
POSIXly, 가까운 작업을 수행할 수 있습니다.
LC_ALL=C find . -depth -name '*[[:space:]]' -exec sh -x -c '
for f do
: mv -i "$f" "${f%"${f##*[![:space:]]}"}"
done' sh {} +
-x
(행복하면 삭제 :
).
이 문자는 ASCII 공백 문자로 제한됩니다.
답변2
Bash 스크립트를 사용하여 이를 수행할 수 있습니다.
스크립트를 작성하고 이 코드를 여기에 복사한 후 "잘못 이름이 지정된 디렉토리"가 있는 최상위 디렉토리에 배치하고 다음을 실행하십시오.
#!/bin/bash
# find all directory names that end with space:
while find "$(pwd)" -type d |grep -q ' $'
do
# select one and store its name in DIR variable
DIR=$(find "$(pwd)" -type d | grep ' $'|head -1)
# remove the last character (which is space) from that
# name and save it to NEW_DIR variable
NEW_DIR=${DIR%?}
# rename the directory
mv "$DIR" "$NEW_DIR"
done
이 스크린샷에서 볼 수 있듯이 "에 비슷한 조건의 디렉터리가 있습니다.테스트 2" 디렉터리에 "space.sh"라는 스크립트도 "테스트 2”. 스크립트를 실행한 후 필요에 따라 디렉토리 이름이 변경되었습니다.
답변3
이 pathlib
모듈은파이썬 3 계층 구조를 탐색하고 해당 파일을 감지하고 이름을 바꾸는 데 필요한 모든 수단이 있습니다.
python3 -c 'import pathlib
for p in iter(pathlib.Path(".").rglob("*[ \t]")):
p.rename("/".join([str(p.parent),p.name.rstrip()]))'
다음 Python 코드를 사용하여 파일 계층에 존재하는 파일 이름 유형을 기반으로 트리를 재귀적으로 탐색합니다. 깊이 우선이 기본 작업입니다. ASCII가 아닌 이름을 찾아 비ASCII 문자를 바꿔서 이름을 바꿉니다. "X"로. 이름을 바꾸기 전에 새 이름이 이미 존재하는지 여부는 확인하지 않습니다.
python3 - <<\eof
import pathlib, re
for p in iter(pathlib.Path('.').rglob('*[! -~]*')):
foo = p.name
for m in re.finditer(r"[^ -~]",p.name):
foo = foo[:m.start()] + "X" + foo[m.end():]
p.rename("/".join([str(p.parent),foo]))
eof
답변4
사용진주의rename
.
제가 쓴 글은 아니지만 자주 사용하고 있습니다. Windows 컴퓨터에서 Linux 컴퓨터로 비디오 파일을 전송하면 디렉터리 이름 끝에 공백이 추가됩니다. 이 명령을 사용하면 폴더 및 파일 이름 끝에 단일 공백이든 여러 공백이든 해당 공백이 제거됩니다.
현재 디렉터리의 디렉터리/파일 이름 끝에 있는 공백을 제거합니다.
시운전을 실시하다
rename -n 's/ *$//' ./*
실제 작동
rename 's/ *$//' ./*