단일 문자(백틱)를 이름으로 사용하여 디렉터리 이동

단일 문자(백틱)를 이름으로 사용하여 디렉터리 이동

이름이 공백으로만 구성된 디렉토리를 이동하는 방법은 무엇입니까?

ls -lah
drwx------  4 user1 user1 8.0K Mar 13 14:16 .
drwxr-xr-x  3 root  root    60 Mar 13 13:48 ..
drwx------ 18 user1 user1 4.0K Mar 13 11:18  

이것은 바이러스의 작업이므로 실행 취소하고 싶습니다.

고쳐 쓰다:그 캐릭터가 무엇인지 잘 모르겠습니다. 우주처럼 움직이려고 하면 안 되더라구요

$mv ' ' test
mv: cannot stat ` ': No such file or directory

고쳐 쓰다:이것은 중복이 아닙니다이름이 없는 파일 삭제, 이 경우 디렉터리와 파일은 매우 유사하게 동작합니다.

답변1

한 가지 가능한 접근 방식은 디렉터리의 inode 번호를 찾아 mv해당 디렉터리에 사용하는 것입니다. 어떤 플랫폼을 사용하고 있는지 알려주지 않았으므로 사용 가능한 도구에 맞게 이러한 제안을 수정해야 할 수도 있습니다(저는 FreeBSD를 사용하고 있습니다).

유틸리티를 사용하여 lsinode 번호를 가져옵니다 . -i스위치는 FreeBSD에서 이 작업을 수행합니다.

$ ls -i
106739 test

( test이 솔루션을 설명하기 위해 방금 만든 빈 디렉터리입니다.)

이제 이 find유틸리티를 사용하여 inode 번호가 있는 디렉터리를 찾을 수 있습니다.

$ find . -inum 106739
./test

그리고 문제가 있는 디렉토리를 이동하십시오.

$ find . -inum 106739 -exec mv {} fixed \;
find: ./test: No such file or directory

오류 메시지에 대해 걱정하지 마십시오. 이는 명령을 실행하는 동안 디렉터리 인덱스가 변경되었기 때문에 발생하므로 find디렉터리 이름이 다음과 같이 변경되어 다소 혼란스럽습니다 fixed.

$ find . -inum 106739
./fixed

앞서 말했듯이 올바른 스위치를 얻으려면 현지 설명서를 참조해야 할 수도 있지만 이 접근 방식이 효과적입니다.

답변2

당신은 그것을 사용할 수 있습니다 :

mv ' ' <where you want to move>

답변3

다음과 같은 방법을 통해 이름을 알아내야 합니다.

ls | od -c

시도해 볼 또 다른 사항은 mv ? somewhere(이름이 한 문자인 경우), mv ?? somewhere(두 문자가 있는 경우) ... 위 od(1)명령은 길이를 말하거나 ls -b출력에서 ​​알려야 합니다.

이름이 실제로 " "(공백) mv ' ' somewhere이면 괜찮습니다.

답변4

공백 문자가 구문 분석되는 것을 방지하려면 달러 기호를 사용하십시오.

mv $' ' /path/to/folder

그렇지 않으면 매개변수로 처리되지 않습니다.

관련 정보