
일부 소프트웨어 오작동으로 인해 내 Linux 시스템에 디렉터리가 있습니다. 아래에서 볼 수 있듯이 정크 이름을 가진 일부 디렉터리가 생성되었습니다. 삭제하는 데 문제가 있습니다.
$ ll
total 1532
drwxr-xr-x 2 sensage sensage 4096 Apr 19 16:56 -?$??
drwxrwxr-x 248 sensage sensage 4096 Apr 23 11:37 .
drwxrwxr-x 99 sensage sensage 4096 Apr 16 14:23 ..
drwxr-xr-x 2 sensage sensage 4096 Apr 6 14:54 }???;?
drwxr-xr-x 2 sensage sensage 4096 Apr 19 03:01 }??=?|
-rw-r--r-- 1 sensage sensage 88 Apr 22 13:37 $
drwxr-xr-x 2 sensage sensage 4096 Apr 2 12:43 ?
drwxr-xr-x 2 sensage sensage 4096 Mar 20 02:51 ?=??&?
drwxr-xr-x 2 sensage sensage 4096 Apr 11 08:40 ?;%??;
drwxr-xr-x 2 sensage sensage 4096 Apr 14 09:38 ?:????
drwxr-xr-x 2 sensage sensage 4096 Mar 22 17:21 ?(?>~?
drwxr-xr-x 2 sensage sensage 4096 Apr 1 13:45 ?[???%
drwxr-xr-x 2 sensage sensage 4096 Apr 3 14:03 ?@????
drwxr-xr-x 2 sensage sensage 4096 Apr 12 16:18 ??
drwxr-xr-x 2 sensage sensage 4096 Apr 17 16:38 ??&???
drwxr-xr-x 2 sensage sensage 4096 Mar 25 02:43 ??+???
drwxr-xr-x 2 sensage sensage 4096 Apr 19 00:46 Ü¡?,??
drwxr-xr-x 2 sensage sensage 4096 Mar 28 18:54 ÚŸ??"?
drwxr-xr-x 2 sensage sensage 4096 Mar 27 01:04 ???(?
drwxr-xr-x 2 sensage sensage 4096 Apr 19 22:41 ??ͨ?`
drwxr-xr-x 2 sensage sensage 4096 Apr 15 11:44 ?????-
파란색으로 표시된 디렉터리 이름을 볼 수 있습니다. 삭제하려고 하면 아래 오류가 발생합니다.
$ ls -1 | grep -v 20 | xargs rm -rf
xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option
rm: invalid option -- ¼
Try `rm ./'-¼$Þ¸Í'' to remove the file `-\274$\336\270\315'.
Try `rm --help' for more information.
내가 그들을 어떻게 해야 합니까?
답변1
ls
ASCII가 아닌 문자(또는 현재 로케일에서 지원되지 않는 문자)를 로 인쇄합니다 ?
. 이것이 출력을 구문 분석하는 것이 ls
나쁜 일인 이유 중 하나입니다 . 의 출력은 ls
다음과 같습니다.바라 보았다. 이와 같은 경우에는 파일 시스템에 존재하는 실제 이름이 아닙니다.
대신 다음과 같은 것을 시도해 보세요. (삭제됩니다.모두/path/to/dir
)을 포함한 파일 및 디렉토리
rm -rf /path/to/dir
또는
find /path/to/dir -delete
또는
find /path/to/dir -exec rm -rf {} +
또는
find /path/to/dir -print0 | xargs -0 rm -rf
필요에 맞게 수정하세요. 파일만 삭제하려면 예를 -type f
들어 경로 뒤에 추가하세요.find
그냥 하는 것rm -rf *
그 디렉토리 안에(그건중요한, 현재 작업 디렉토리는 삭제하려는 파일 및 디렉토리가 있는 디렉토리여야 합니다)로도 충분할 수 있습니다.
또한보십시오왜~ 아니다파싱 ls
?
답변2
인쇄할 수 없는 문자로 명명된 디렉터리 및/또는 파일을 쉽게 제거하는 다른 방법은 잘못된 디렉터리(또는 파일)의 inode 번호를 확인하고 이를 사용하여 디렉터리(또는 파일)를 삭제하는 것입니다.
cd /mypath || exit 1
ls -il #...to show the inode <number> in the leftmost column output
find . -xdev -inum <number> -exec rm -rf {} +
이 -xdev
옵션은 find
다른 파일 시스템의 디렉토리를 내려가지 않도록 보장합니다. Inode 번호는 파일 시스템 내에서만 고유함을 보장합니다.
find
파일만 반환하려면 추가 옵션으로 '-f'를 추가하세요 .