"백스페이스 문자"의 이름을 지정하는 데 올바른 용어를 사용하지 않았다면 죄송합니다.
이름에 백스페이스가 있는 것으로 보이는 두 개의 파일이 포함된 디렉터리를 정리하고 싶습니다. 디렉토리를 나열하면 다음과 같습니다.
ls -la
알겠어요:
-rwxrwxrwx 1 guy guy 729 Jun 26 2007 z_regular.mk
-rwxrwxrwx 1 guy guy 1 Sep 7 2016
-rwxrwxrwx 1 guy guy 3220 Sep 27 2
실수로 "백스페이스 문자"를 사용하여 파일 이름을 입력했기 때문에 이름이 더 이상 표시되지 않는 것 같습니다.
마지막 두 파일의 이름을 어떻게 바꿀 수 있습니까?
나는 그들을 무엇이라고 불러야할지 모르겠습니다. 파일 이름을 16진수 또는 다른 형식으로 표시할 수 있는 옵션이 있습니까 ls
? 명령에서 최신 파일 이름을 어떻게 사용할 수 있습니까 mv
? 저는 AIX Unix TLS v6을 사용하고 있습니다.
편집하다:
이 파일은 del
각각 2자와 4자입니다.
ls -lb
주어진
-rwxrwxrwx 1 guy guy 1 Sep 7 2016 \177\177
-rwxrwxrwx 1 guy guy 3220 Sep 27 2 \177\177\177\177\177
하지만 해결책을 찾았습니다이름이 없는 파일을 삭제하는 방법AIX의 상황에서는 작동하지 않습니다.
지금까지 나는 성공하지 않고 다음을 시도했습니다.
l>ls -l $'\0177\0177'
$\0177\0177 not found
l>ls -l '\0177\0177'
\0177\0177 not found
l>ls -l '\177\177'
\177\177 not found
답변1
구문 (ksh93에서, 현재 , , , FreeBSD를 $'\ooo'
포함한 대부분의 최신 Bourne 유사 쉘에서 발견됨 ) 사용zsh
bash
mksh
sh
기준echo
(C 및 대부분의 다른 언어에서와 마찬가지로) 8진수 이스케이프와 반대되는 구문입니다. 따라서 \
다음에는 최대 3개의 8진수가 올 수 있습니다: $'\177'
. $'\0177'
그것은 다음과 같을 것이다 $'\017'7
. 그래서:
ls -ld $'\177\177'
mv $'\177\177' better-name
( \177
일명 ^?
ASCII DEL
문자는 다음과 같습니다.아니요백스페이스 ^H
/// BS
문자 \10
)
답변2
제안된 중복 항목의 맨 아래에서 해결책을 찾았습니다.
노드 번호 식별
ls -lbi 25553 -rwxrwxrwx 1 guy guy 1 Sep 7 2016 \177\177 25559 -rwxrwxrwx 1 guy guy 3220 Sep 27 2 \177\177\177\177\177
그런 다음 다음에서 돌아올 때 이동할 수 있습니다
find
.find . -inum 25553 |xargs -I{} mv {} recovered.x find . -inum 25559 |xargs -I{} mv {} recovered.y