이름이 공백으로만 구성된 디렉토리를 이동하는 방법은 무엇입니까?
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를 사용하고 있습니다).
유틸리티를 사용하여 ls
inode 번호를 가져옵니다 . -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
그렇지 않으면 매개변수로 처리되지 않습니다.