'Human(2012)''과 같은 폴더를 어떻게 입력하고 이름을 바꿀 수 있나요?

'Human(2012)''과 같은 폴더를 어떻게 입력하고 이름을 바꿀 수 있나요?

명령줄을 통해 FTP를 사용하고 있는데 두 가지 문제가 발생합니다. 다음과 같은 폴더의 이름을 바꾸거나 폴더를 입력할 수 없습니다.

dir /home/folder1/Human (2012)

나는 시도했다:

cd ~/folder1/Human\ (2012)

여기서 다음과 같은 메시지를 받습니다 the folder does not exist.

mv ~/folder1/Human\ (2012)

이 경우 다음과 같은 메시지를 받습니다.

syntaxfailure at (

이 문제를 어떻게 해결할 수 있나요?

답변1

경로를 큰따옴표로 묶을 수 있습니다.

cd ~/"folder1/Human (2012)"

(또는 , )및 (공백) 에 대한 이스케이프 시퀀스를 제공해야 합니다 (특수 문자이므로).

cd ~/folder1/Human\ \(2012\)

그리고

mv ~/"folder1/Human (2012)"

이스케이프 시퀀스 사용:

mv ~/folder1/Human\ \(2012\)

답변2

\당신은 공간 이전 에 대한 올바른 생각을 가지고 있습니다 . 이는 괄호를 포함한 모든 특수 문자에 적용됩니다. 열린 괄호 앞에 백슬래시를 넣고 닫는 괄호 앞에 또 다른 백슬래시를 넣으면 작동합니다.

이러한 경우에는 탭 완성이 도움이 됩니다. 파일 이름을 입력하기 시작한 다음 을 누르면 Tab필요한 곳에 백슬래시를 삽입하여 파일 이름의 나머지 부분이 자동 완성됩니다. (어떤 파일을 의미하는지 명확하게 알 수 있을 만큼 파일 이름을 충분히 입력하지 않은 경우 bash는 가능한 한 많은 파일 이름을 자동 완성합니다. 탭을 두 번 누르면 가능한 파일 이름 완성 목록이 표시됩니다.)

답변3

이를 수행하는 방법은 "파일이나 디렉토리를 지정할 때 표시를 사용하는 것이라는 snoop의 의견에 동의합니다.

그러나 이름을 바꿔야 하는 디렉토리가 많이 있는 경우 를 사용하여 rename더 친숙한 이름으로 이름을 바꿀 수 있습니다. 이름 바꾸기는 파일 및 디렉터리 이름 바꾸기를 sed제외 하고 유사하게 작동 하지만 일반적으로 파일 내용을 편집하는 데 사용됩니다. 예는 다음과 같습니다.renamesed

rename 's/ //g;s/\(//g;s/\)//g' ~/folder1/*

따라서 다음 디렉터리가 다음 위치에 있는 경우 ~/folder1:

Human (2012)
Human (2011)
Human (2010)

대신 다음과 같이 이름이 변경됩니다.

Human2012
Human2011
Human2010

자세한 내용을 보려면 다음 명령을 실행하십시오.

man rename

관련 정보