stat 명령에 숨겨진 파일을 포함하는 방법은 무엇입니까?

stat 명령에 숨겨진 파일을 포함하는 방법은 무엇입니까?

내 코드에서는 기본적으로 모든 파일을 재귀적으로 반복하고 stat -c%s $i.

stat: cannot stat '/media/root/persistence/.Trash-0/info/subory': No such file or directory

/media/root/persistence/디렉토리 로 이동하여 를 입력하면 ls폴더 ./Trash-0가 표시되지 않으므로 폴더 자체와 해당 내용이 숨겨져 있다고 가정합니다. 이러한 오류 메시지를 제거하고 그 안에 있는 파일의 크기를 어떻게 알 수 있습니까?

답변1

이것을 시도해 보세요. 모든 파일을 표시 ".*"하여 숨겨진 파일을 표시하고 "*"숨기지 않은 파일을 표시합니다.

stat -c%s .* *

답변2

stat숨김 파일 동작에는 문제가 없습니다. 기본적으로 Unix 계열 시스템의 프로그램은 일반적으로 로 시작하는 파일과 디렉터리를 무시 .하지만 이러한 파일을 명시적으로 지정한다고 해서 해당 프로그램이 해당 파일을 보거나 조작하는 것을 방지할 수는 없습니다.

stat이 오류는 존재하지 않는 파일이나 디렉터리에서 작업이 시도되었다는 의미입니다 . 이는 코드가 먼저 파일 목록을 생성한 다음 해당 목록을 반복할 때 코드 .../info/subory가 파일 목록에 도달하기 전에 삭제되거나 이름이 바뀌거나 이동되기 때문일 가능성이 높습니다.

상위 디렉터리의 이름을 고려하면 이는 코드가 실행되는 동안 수동으로 또는 일부 자동화된 프로세스를 통해 데스크톱의 정크 파일을 비우는 것만큼 간단할 수 있습니다.

이와 같은 일시적인 문제의 경우 가장 간단한 해결책은 오류를 무시하고 다음 루프 반복으로 건너뛰는 것입니다.

stat -c%s $i 2>/dev/null || continue

또는 기본값을 할당합니다( 유효한 크기 -1이므로 문제를 나타내는 데 사용됨).0

size=$(stat -c%s $i || echo -1)

다음을 실행하기 전에 파일이나 디렉터리가 존재하는지 확인할 수도 있습니다 stat.

test -e $i && stat -c%s $i

또는 이러한 기술을 조합하여 사용하십시오.

관련 정보