폴더 이름 끝의 공백을 제거하는 방법은 무엇입니까?

폴더 이름 끝의 공백을 제거하는 방법은 무엇입니까?

폴더 이름 끝의 공백을 제거하고 싶습니다.

"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/ *$//' ./*

관련 정보