마지막 두 파일의 이름을 어떻게 바꿀 수 있습니까?

마지막 두 파일의 이름을 어떻게 바꿀 수 있습니까?

"백스페이스 문자"의 이름을 지정하는 데 올바른 용어를 사용하지 않았다면 죄송합니다.

이름에 백스페이스가 있는 것으로 보이는 두 개의 파일이 포함된 디렉터리를 정리하고 싶습니다. 디렉토리를 나열하면 다음과 같습니다.

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 유사 쉘에서 발견됨 ) 사용zshbashmkshsh기준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

제안된 중복 항목의 맨 아래에서 해결책을 찾았습니다.

  1. 노드 번호 식별

    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
    
  2. 그런 다음 다음에서 돌아올 때 이동할 수 있습니다 find.

    find . -inum 25553  |xargs -I{} mv {} recovered.x
    find . -inum 25559  |xargs -I{} mv {} recovered.y
    

관련 정보