>php教程 >PHP开发 >Linux에서 일반적인 사용 예 찾기

Linux에서 일반적인 사용 예 찾기

黄舟
黄舟원래의
2016-12-13 13:49:481100검색

Linux에서 find의 일반적인 사용 예

·find path -option [ -print ] [ -exec -ok command ] {} ;

find 명령 매개변수

pathname: find 명령어로 검색한 디렉터리 경로입니다. 예를 들어, 현재 디렉터리를 나타내려면 .을 사용하고 시스템 루트 디렉터리를 나타내려면 .
-print: find 명령은 일치하는 파일을 표준 출력으로 출력합니다.
-exec: find 명령은 일치하는 파일에서 이 매개변수에 의해 제공된 쉘 명령을 실행합니다. 해당 명령은 'command' { } ; 형식입니다. { }와 ; 사이의 공백에 유의하세요.
-ok: 각 명령을 실행하기 전에 사용자에게 실행 여부를 확인하는 프롬프트가 표시됩니다. .

#-print 찾은 파일을 표준 출력으로 출력
#-exec command {} ---찾은 파일에 대해 명령 작업을 실행합니다. {}와 #-ok는 실행하기 전에

사용자에게 물어봐야 한다는 점을 제외하면 -exec와 동일합니다. 예: find . -name .svn | xargs rm -rf

== ====== ==========================================

- name filename #파일명으로 검색

-perm #실행권한으로 검색
-user username #파일 소유자로 검색
-group groupname #그룹으로 검색
- mtime -n +n                                                                                                            >                                                    
-ctime -n +n #파일 생성 시간을 기준으로 파일 검색, -n은 n일 이내, +n은 n일 전을 의미

-Nogram #유효한 그룹이 없는 파일 찾기, 즉 해당 파일의 파일이/etc/groups에 존재하지 않음
-NOUSER # 비밀번호가 존재하지 않음
-newer f1 ! f2 파일 찾기, -n은 n일 이내, +n은 n일 전을 의미합니다. 일 이내, +n은 n일 전을 의미합니다. 즉, 파일 소유자가 /etc/passwd
-newer f1에 존재하지 않습니다! f2 #블록디바이스, 디렉터리, 캐릭터디바이스, 파이프, 심볼릭링크, 일반파일 확인 하위디렉토리에 들어가기 전 이 디렉터리를 먼저 찾아보세요
-FSTYPE #새롭지만 오래된 파일을 변경하려면 변경시간을 확인하세요
-B/D/C/P/L/F # 유형, 문자 장치, 파이프, 심볼릭 링크, 일반 파일
-size                      n[c]                                      이 디렉터리
-fstype                                                              # 특정 디렉터리에 있는 파일 검색 이러한 파일 시스템 유형은 일반적으로 /etc/fstab에서 찾을 수 있습니다.               -follow                   #심볼릭 링크 파일이 발견되면
-cpio 링크가 가리키는 파일을 따라갑니다.           T> -Mount #When 파일을 확인하면서 파일 시스템 마운트 지점을 넘지 마십시오.
- #따라가기 기호 링크 파일이 발견되면
-CPIO #일치하는 파일을 일치시키려면
파일을 따라가세요. -prune                          #디렉터리 무시

============================================= === ======
$find ~ -name "*.txt" -print # $HOME에서 .txt 파일을 확인하고 표시합니다.
$find -name "*.txt" - print
$find . -name "[A-Z]*" -print # 대문자로 시작하는 파일 확인
$find /etc -name "host*" -print # 호스트로 시작하는 파일 확인
$find . - name "[a-z][a-z][0–9][0–9].txt" -print # 소문자 2개와 숫자 2개로 시작하는 txt 파일 확인
$find 755 -print
$find . -perm -007 -exec ls -l {} ; #모든 사용자가 읽고, 쓰고, 실행할 수 있는 파일을 확인합니다. -perm 777
$find
$find ! -type d -print
$find . -type l -print

$find . -size +1000000c -print # 길이가 100c인 파일 확인
$find . -size +10 -print etc home apps -length -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} #cnscn 확인 사용자가 존재합니다

$find . -name "yao*" | xargs 파일

$find . -name "yao*" | xargs echo "" > "야오*" | 오-오

=================================== ======== ===========

find -name april* 현재 디렉토리에서 april로 시작하는 파일 찾기
find -name april* fprint file 현재 디렉토리에서 april로 시작하는 파일을 찾아 그 결과를
find -name ap* 파일에 출력 -o -name may* ap로 시작하는 파일 찾기 또는
find /mnt -name tom.txt -ftype vfat /mnt에서 tom.txt라는 파일과 파일 시스템 유형 vfat 찾기
find /mnt -name t .txt ! -ftype vfat /mnt에서 tom.txt라는 파일을 찾고 파일 시스템 유형이 vfat가 아닙니다.
find /tmp -name wa* -type l /tmp에서 이름이 wa로 시작하고 해당 파일을 검색합니다. 유형은 심볼릭 링크입니다
find /home -mtime -2 지난 이틀 동안 변경된 파일 검색 액세스된 파일
find /home -mmin +60 /home에서 변경된 파일 검색 60분 전
find /home -amin +30 30분 전에 액세스한 파일 검색
find /home -newer tmp.txt /home에서 업데이트 시간이 tmp.txt보다 최근인 파일이나 디렉터리를 확인하세요.
find /home -anewer tmp.txt 파일 또는 디렉터리
find /home -used -2 ​​​​파일 또는 디렉터리가 수정된 후 2일 이내에 액세스한 파일 또는 디렉터리 나열
find /home -user cnscn /home 디렉토리의 파일 또는 디렉토리 나열 사용자 cnscn에 속한 파일 또는 디렉토리
find /home -uid +501 /home 디렉토리에서 사용자 식별 코드가 501보다 큰 파일 또는 디렉토리 나열
find /home -group cnscn /home의 그룹을 cnscn으로 나열
find /home -gid 501 /home에서 그룹 ID가 501인 파일 또는 디렉터리 나열
find /home -nouser /의 파일 또는 디렉터리 나열 로컬 사용자에 속하지 않는 홈
find /home -nogroup 로컬 그룹에 속하지 않는 /home의 파일 또는 디렉터리 나열
find /home -name tmp.txt -maxlength 4 tmp를 나열합니다. txt in /home 검색의 최대 깊이는 3레벨입니다
find /home -name tmp.txt -minlength 3 레벨 2부터 검색 시작
find /home -empty 크기가 0인 파일 또는 빈 디렉터리 찾기 k 파일
find /home -size -512k 512k보다 작은 파일 찾기
find /home -links +2 하드 링크 번호가 2보다 큰 파일 또는 디렉터리 찾기 권한이 700인 파일 검색 또는 디렉터리
find /tmp -name tmp.txt -exec cat {} ;
/tmp 찾기 -name tmp.txt -ok rm {} ;

find / -amin -10 # 시스템에서 지난 10분 동안 액세스한 파일 찾기
find / -atime -2 # 시스템에서 지난 48시간 동안 액세스한 파일 찾기
find / -empty # 시스템의 빈 파일 또는 폴더에서 찾기
find / -group cat >find / -mtime -1 #시스템에서 지난 24시간 동안 수정된 파일 찾기
find / -nouser #소속된 파일 찾기 시스템에서 잘못된 사용자에게
find / -user fred #시스템에서 파일 찾기 FRED 사용자에게 속한 파일

현재 디렉터리에서 모든 일반 파일 검색

# find - . f -exec ls -l {} ;

-rw-r–r– 1 루트 루트 34928 2003-02-25 ./conf/httpd.conf

-rw-r–r– 1 루트 루트 12959 2003-02-25 ./conf/magic
-rw-r–r– 루트 ============================= ===================
/logs 디렉토리에서 5일 이상 전에 변경된 파일을 찾아서 삭제하세요.
$ find 로그 -type f -mtime +5 -exec -ok rm {} ;

==== ============================ =================

당일문의 수정파일
[root@book class]# find ./ -mtime -1 -type f -exec ls - l {} ;

============ =========================== =========

파일을 쿼리해서 표시할지 물어보세요
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} ;
< ls … ./classDB.inc.php > ? y

-rw-r –r– 1 cnscn cnscn 13709 1월 12일 12:22 ./classDB.inc.php

[루트 @book class]# find ./ -mtime -1 -type f -ok ls -l {} ;
< ls … ./classDB.inc.php > #

========================================= ======
쿼리하고 처리를 위해 awk에 넘겨주세요
[root@book class] # who | awk '{print $1"t"$2}'
cnscn pts/0

============================================= ====

awk—grep—sed

[root@book class]# df -k | awk '{print $1}' | grep -v 'none' | ///g"
파일 시스템

sda2

sda1
[root@book class]# df -k | awk '{print $1}' | grep -v 'none'

파일 system

/dev/sda2
/dev/sda1



1 )/tmp에서 모든 *.h를 찾고, 이 파일에서 "SYSCALL_VECTOR"를 검색한 다음 마지막으로 "SYSCALL_VECTOR"가 포함된 모든 파일 이름을 인쇄합니다.

A) find /tmp -name "*.h " | exec grep "SYSCALL_VECTOR" {} ; -print

2)find / -name filename -exec rm -rf {} ;

find / -name filename -ok rm -rf {} ;

3) 예를 들어 디스크에서 3M보다 큰 파일을 찾으려는 경우:

find . -size +3000k -exec ls -ld {} ;

4) 찾은 내용을 다른 위치에 복사합니다.

find *.c -exec cp '{}' /tmp ';'


특수 파일이 있는 경우 cpio를 사용하거나 다음 구문을 사용할 수 있습니다.

find dir -name filename - print | cpio -pdv newdir

6) 2004-11-30 16:36:37에 변경된 파일 찾기
# A=`find ./ -name "*php"` | ls -l –full-time $A 2> /null | grep "2004-11-30 16:36:37"

Linux-all, Linux | 댓글 없음 »

인스턴스 찾기

2006년 4월 18일

/usr/linux에서 모든 *.h를 찾으려면 이 파일에서 "SYSCALL_VECTOR"를 검색하고 마지막으로 "SYSCALL_VECTOR"가 포함된 모든 파일 이름을 인쇄하십시오.
find /usr/linux -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
grep SYSCALL_VECTOR /usr/linux/*.h | cut -d':' -f1 | >find /usr/linux -name "*.h" -exec grep "SYSCALL_VECTOR" {} ; -print

find / -name filename| rm -rf를 사용했지만 실패했습니다. 왜 성공하지 못했는지 물어보세요.

find / -name filename -exec rm -rf {} ;
find . -name filename |rm -rf {}를 시도하여 찾은 결과를 나타냅니다.
;은 "헌법"과 동일하며 말할 것도 없고 단지 이렇게 규정했을 뿐이며 -exec 뒤에는 명령의 끝을 나타내는 기호가 필요합니다. 그 답은 man find에서 찾을 수 있다.
rm이 find 결과를 인식하도록 하려면 다음과 같이 합니다.
find / -name filename | 표준 입력에서 전달된 명령
특정 문자열이 포함된 파일을 찾습니다.
예를 들어 다음을 포함하는 파일을 찾습니다. 현재 디렉터리에서 "찾고 싶은 문자열...":
$find . -type f -exec grep "찾고 싶은 문자열..." {} -print

루트 디렉터리에서 tmpfile 검사를 시작하고 발견되면 즉시 삭제하세요.

find / -name "tmpfile" -exec rm {} ;


find의 Perm 문제

다음 명령은 무엇을 의미하나요? 핵심은 숫자 앞의 -입니다. 다른 사람들은 모두

find -name ".*" -perm -007
알고 있습니다.
find -name ".*" -perm 755
이것이 사용됩니다. 권한 비트가 755인 숨겨진 파일을 찾으려면
아, 그런데 위 명령에서 find의 경로 이름 매개 변수를 생략했습니다. find는 기본적으로 현재 작업 디렉터리를 검색합니까?
-exec 대신 -ok를 사용하는 경우에도 {}를 추가해야 하나요?
이미 명확하지만 여전히 필요합니다. 왜냐하면 -ok는 단지 작업을 확인하기 위해 한 단계를 더 추가하기 때문입니다. 해당 전자 텍스트의 의미를 이해하지 못했습니다. 죄송합니다
-007은 모든 사용자가 읽고 쓰고 실행할 수 있는 파일을 찾는다는 의미입니다~~
설명하시죠?
find -name ".*" -perm -007과 find -name ".*" -perm 777 사이에 차이점이 있나요?
-007은 어떻게 얻었나요?
하지만 문제가 있습니다
find . -perm -100을 사용하여 현재 디렉토리를 나열합니다. 이유는 무엇입니까?

다음은 2002/10/01 오전 06시 15분에 익스플로러에서 공개한 내용을 인용한 것입니다.

-007은 모든 사용자가 읽고, 쓰고, 실행할 수 있는 파일을 찾는 것을 의미하므로, 조심하세요~~

-007은 다른 사용자(소유자가 아닌 다른 그룹)가 읽고 쓰고 실행할 수 있는 파일을 찾는다는 의미입니다. 꼭 같은 그룹이 읽고 쓸 수 있어야 하는 것은 아닙니다. 최소 권한은 007입니다.
다음 인용문은 Xiaobaicai가 2002/10/01 10:16am에 게시한 내용에서 가져온 것입니다.
좋아요, 하하 ​​
하지만 문제가 있습니다
find 를 사용합니다. -perm -100 현재 디렉토리를 나열합니다. 이유는 무엇입니까?
이 방법은 디렉터리를 정확하게 찾을 수 없습니다. -100은 최소한 소유자가 권한을 실행할 수 있음을 의미합니다.
Unix 시스템에서는 디렉터리 파일에 대한 실행 권한이 있는 경우에만 디렉터리를 입력할 수 있습니다. 이것이 디렉토리 파일이 나열되는 이유입니다.
find . -perm -001 -print는 종종 디렉토리 파일을 찾습니다.
물론 디렉토리를 찾는 데 이 방법을 사용하려는 것은 아니지만 이해가 되지 않습니다. . -100의 의미
그럼 비유하자면 -010은 적어도 소유자와 동일한 그룹이 권한을 실행할 수 있다는 뜻인가요? 즉, 010과 -여기서는 실제로 별개입니다. -는 최소한을 의미하며 010은 실제로 권한 비트를 설명하는 데 사용됩니까?
확실히 알겠습니다. 감사합니다

찾은 내용을 다른 곳에 복사하시겠습니까?

find *.c -exec cp '{}' /tmp ';'

특수한 내용이 있는 경우 파일의 경우 cpio를 사용하거나 다음 구문을 사용할 수 있습니다.
find dir -name filename -print | cpio -pdv newdir

디스크에서 특정 크기 범위 내의 파일을 찾습니다

예를 들어 , 디스크에서 3M보다 큰 파일을 찾으려면:

find . -size +3000k -exec ls -ld {} ;

find를 사용하여 특정 날짜에 변경된 파일을 찾는 방법은 무엇입니까?

다음 명령줄을 사용하여 다음을 수행할 수 있습니다.

A=`find ~ -print` | ls -l –full-time $A 2>/dev/null | grep "Jun 27" | 🎜>

find 명령을 사용하여 특정 기간의 쉘을 찾는 방법. 예를 들어 11시부터 12시까지. 감사합니다
다음 내용으로 심사 시간 스크립트를 만드세요.
ls -l $*|awk '{split($8,hour,":");if((hour[1]>23 || hour[ 1 ] < 1)&&hour[1]<24)print}'
찾고 싶은 디렉토리로 이동하여
find ./ -name "*" -exec Judgetime {} ;
을 실행하세요. 시간 형식에 주의하십시오. 24시간제입니다.
고마워요. 분 단위로 정확하고 싶으면 어떻게 하나요
touch -t 04241112 starttemp #정확도 12분
touch -t 04241220 endtemp #12:20 기준
find [dir] - 최신 starttemp -a ! -newer endtemp -exec ls -l {} ;
nowスr
어제 12시 10분 파일은요?
매일 실행할 때는 해당 날짜의 날짜와 타임스탬프로 대체하면 충분하지 않을까요?
11시부터 12시까지 다 찾았는지는 모르겠지만 한 번만 실행한 건가요, 아니면 매일 실행한 건가요?
이런 경우에는 물건을 어디에 두었는지 잊어버린 것 같아요. 밤이 깊었다는 것만 기억나네요.
그렇군요!
역시 대나무의!
문제 해결 방법을 아시는 것뿐만 아니라 어떤 상황에서 그런 문제가 발생하는지 아시는 분 정말 존경스럽습니다!
문제가 또 발생합니다. 이 파일을 만들 때. 시간이 될 줄 알았는데 이제 12시가 아닌 2002년으로 되어 있네요.
12시가 지날 때까지 기다리세요!

지정된 날짜의 파일 삭제
find ./ -name file name-exec rm -f {};
예: 현재 30일 이내에 사용되지 않은 파일을 삭제하려면 다음을 사용합니다. 다음 명령:
find / -atime +30 -exec rm -f {} ;
SHELL의 짧은 부분을 직접 작성해보고 ll, grep, rm 명령도 사용했지만 그렇지 않았습니다. 만족스럽다.
필터링된 파일명 목록에 FOR 문을 사용한 후 rm을 실행합니다. 이제 이 SHELL을 확장하여 n일 전에 파일을 삭제하기 위해 매일 정기적으로 실행하고 싶습니다. 감사합니다.
또 다른 질문이 있습니다. 앞서 친구가 언급한 "find / -atime +30 -exec rm -f {} ;
" 방법을 시도해 보았으나 작동하지 않는 것 같습니다. -atime n 매개변수는 n일 전에 액세스한 파일을 검색하는 것입니다. 내가 이해하지 못하는 것은 여기서 시간 기준점이 무엇인지, 그리고 n일을 어떻게 계산하는지입니다.
질문 2: 잘못된 명령 "ll |cut -f 1"을 사용했나요? ll에 나열된 파일 이름을 제거하고 싶었지만 cut -f 명령으로는 제거할 수 없었습니다. 대신 사용하려면 ll |cut -c 59- 이렇게 하면 원하는 파일 이름을 얻을 수 있지만 이것이 풀 아이디어입니다! awk도 사용해 보았지만 맞지 않는 것 같습니다. 누군가 나에게 몇 가지 팁을 줄 수 있는지 살펴보겠습니다. TKS SO MUCH
질문 3: I 노드의 날짜 형식을 변경하는 방법. 현재 시스템에 표시되는 내용은 다음과 같습니다.
-rw-r—– 1 msahz01 사용자 2253 2002년 2월 2일 poheader.i
이를
-rw-rw-rw- 1 주택 사용자 2193으로 변경하고 싶습니다. 2001년 4월 19일 hkdisp.p
이를 어떻게 달성할 수 있나요?
awk가 작동해야 합니다
awk '{print $9}'
일보다 오래된 파일을 삭제합니다.
find /yourpath -mtime +31 -exec rm {} ;
find /yourpath - mtime +366 -exec rm {} ;

find에서 -ctime, -mtime 및 -atime의 차이점은 무엇입니까

-ctime과 -mtime의 관계는 무엇입니까?
상위 디렉터리의 ctime이 변경되면 그 아래 파일의 ctime도 자동으로 변경되나요?
-ctime, -mtime, -atime 이 정보는 어디에 저장되나요?

-mtime을 사용합니다. - 1 새로 생성되거나 수정된 ​​파일을 찾았습니다.
그런데 하루 안에 mv된 파일을 어떻게 찾을 수 있습니까(해당 시간은 원래 시간, 하루 이전)?

-newer를 사용하세요. 옵션.
먼저 다음과 같이 원하는 시간에 파일을 터치할 수 있습니다.
$ touch -t 08190800 test
$ ls -l test
-rw-r–r– 1 dba other 0 Aug 19 08:00 테스트
그런 다음
$ find . -newer test -print
.
./.sh_history
$ ls -l .sh_history
-rw——- 1 dba 기타 154 Aug 20 17:39 .sh_history

언제든지 터치를 사용하여 파일을 작성한 다음 -newer, -newer 옵션을 사용하여 성공하세요.

1. ctime에는 inode 정보의 수정 시간이 포함됩니다. mtime은 파일 내용이 생성되거나 수정되는 시간만 나타냅니다.
2번
3. 파일 시스템의 슈퍼 블록.

책을 확인해 보니 -ctime은 inode의 변경(또는 파일 상태의 변경)을 의미합니다.
inode에는 어떤 정보가 저장되어 있나요?
몇 가지를 해봤습니다. 작은 테스트, -mtime 변경, - ctime도 변경해야 합니다.
파일 이름을 변경하면 -ctime도 변경됩니다.
i-node에 저장된 내용은 누가 대답할 수 있습니까?

vi / usr/include/sys/inode.h

마스터님, /usr/include/sys/inode.h에 액세스할 수 없습니다.
발췌 내용은 다음과 같습니다.
디렉토리에는 디렉토리 항목이 포함되어 있습니다. 각 항목에는 파일 또는 하위 디렉토리 이름과 인덱스 노드 참조 번호가 포함되어 있습니다. (i-노드 번호) 속도를 높이고 디스크 공간 사용을 향상시키기 위해 파일의 데이터는 컴퓨터 메모리의 다양한 위치에 저장됩니다. i-node는 수정 및 액세스 시간, 액세스 모드, 링크 수, 파일 소유자 및 파일 유형을 포함하여 파일에 대한 기타 정보도 기록합니다.
그런데 -atime이 변경된 것을 확인했지만 - ctime이 변경되지 않은 이유는 무엇입니까?
(먼저 ASCII 파일을 cat한 다음 -atime -1을 사용하고 -ctime -1을 사용하지만 존재하지 않습니다.)
inode 정보 변경과 ctime 변경?

제가 올린 글에 동의하지 않습니다. 말씀드린 것처럼 atime, ctime, mtime은 sco unix 아래에 있는 구조입니다. stat.(stat_32), 시스템 파일 시스템에 따라
sco의 inode 구조는 다음과 같습니다:

typedef struct inode
{
struct inode *i_forw; inode 해시 체인 */
struct inode *i_back; /* '' */
struct inode *av_forw; /* freelist chain */
struct inode *av_back; int *i_fsptr; /* fs 종속에 대한 "유형 없는" 포인터 */
ino32_t i_number; /* i 번호, 개발자 주소와 1대 1 */
ushort i_ftype; /* 파일 유형 = IFDIR, IFREG 등. */
short i_fstyp; /* 파일 시스템 유형 */
off_t i_size; /* 파일 크기 */
ushort i_uid; /* 소유자 */
ushort i_gid; 소유자 그룹 */
ushort i_flag;
ushort i_want; /* MP 경쟁을 피하기 위한 i_flag 확장 */
ushort i_count; /* 참조 횟수 */
short i_nlink; /
dev_t i_rdev; /* 원시 장치 번호 */
#define i_namtype i_rdev /* i_ftype==IFNAM 하위 유형 */
dev_t i_dev; /* inode가 있는 장치 */
struct mount * i_mton;/* 이 디렉토리가 마운트된 테이블 항목을 마운트하는 ptr */
struct 영역 *i_rp; /* 공유 영역이 있는 경우 ptr */
struct stdata *i_sp; /* 관련 스트림에 대한 ptr */
struct iisem *isem; /* XENIX 세마포에 대한 ptr */
struct iisd *isd /* XENIX 공유 데이터에 대한 ptr */
} i_un;
#define i_mnton i_un.i_mton /* i_ftype ==IFDIR IMOUNT */
#define i_rptr i_un.i_rp /* i_ftype==IFREG || i_ftype==IFBLK */
#define i_sptr i_un.i_sp /* i_ftype ==IFCHR || IFIFO */
#define i_sem i_un.isem /* i_ftype==IFNAM && i_namtype==IFSEM */
#define i_sd i_un.isd /* i_ftype==IFNAM && i_namtype ==IFSHD */

struct fstypsw *i_fstypp; /* 파일 시스템 스위치 FSPTR에 대한 ptr */

long *i_filocks; /* filock(구조) 목록에 대한 포인터 */

unsigned long i_mappages ; /* 현재 캐시된 페이지 수 * /
unsigned long i_vcode; /* 미리 읽기 블록 저장(NFS) */
short i_wcnt /* 쓰기 열기 횟수 또는 ITEXT 횟수 */
struct lockb i_cilock; /* i_flag 변경 사항을 동기화하는 tas */
ushort i_rdlocks; /* 비배타적 잠금 장치 수 */
} inode_t;

따라서 파일에 액세스해도 inode 정보가 변경되지 않습니다.

chown, chgrp, chmod 명령 사용 mtime과 ctime을 매우 잘 비교할 수 있습니다.

chown은 파일 소유자를 변경하지만 mtime에서는 찾을 수 없습니다.
한번 시도해 보세요.

고맙습니다, Mozhu! 저는 위에서 인터뷰를 했는데 -ctime을 이해하지 못했습니다.

테스트 결과는 다음과 같습니다.

파일을 수정합니다. 변경되면 -ctime도 변경됩니다.
파일에 액세스하면 -atime이 변경됩니다. -ctime 변경되지 않습니다.
chown, chgrp, chmod, mv는 모두 -ctime을 변경하지만 -atime에는 영향을 주지 않습니다. -mtime.
touch는 -mtime 및/또는 -atime을 변경할 수 있지만 touch -a는 액세스만 변경합니다. 시간이 변경되면 -ctime도 변경됩니다.
touch -m이 시간을 변경하면 - ctime도 변경됩니다.
-ctime을 변경할 수 있는 것이 많은 것 같은데, 이는 불분명합니다.
-mtime, atime, ctime을 표시할 수 있는 방법이 있나요?
-ctime을 사용할 수 있나요? 디렉터리의 증분 파일을 백업하거나 전송하려면?
감사합니다!

도구가 표시되지 않습니다. (아마도 모르겠습니다.)

다음 프로그램의 st_mtime을 st_ctime 또는 st_atime으로 바꾸세요. 그러면 원하는 것을 얻을 수 있습니다.

#include
int
main (int argc, char * *argv)
{
struct stat buf;
char date[80];
char fname[80];
printf("mtime을 확인하려면 파일 이름(전체 경로 포함)을 입력하세요: " );
scanf("%s",fname);
stat(fname, &buf );
printf ("mtime (초) of %s = %ldn", fname, buf.st_mtime) ;
strcpy(date, ctime((time_t *)&(buf.st_mtime)));
printf ("mtime (in date) of %s = %sn", fname, date);
}

파일 백업에서 허용되지 않는 것은 무엇입니까?

mtime ls -l 파일 내용이 마지막으로 수정된 시간

atime ls -lu 파일이 마지막으로 액세스된 시간

ctime ls -li 파일 수정, 속성 소유자 변경 등 최근 파일 변경 상태를 나타냅니다. , 노드, 링크 변경 등 시간 전후의 변경으로 제한되어서는 안 됩니다

ls 도움말을 읽고 ctime 또는 atime으로 정렬하는 줄 알았는데 표시되는 시간이 여전히 mtime입니다. 🎜>

잘 비교해 보니 아이한님 말씀이 맞네요. 감사합니다.

팁을 주신 ahyan에게 감사드립니다. 저는 Solaris에서 다음을 시도했습니다.
mtime은 ls -l로 표시됩니다.
atime은 ls -lu로 표시됩니다.
ctime은 ls -lc로 표시됩니다. ls -li inode 번호만)
발췌 내용은 다음과 같습니다.
-c i-node의 마지막 수정 시간(파일
생성, 모드 변경 등)을 정렬에 사용합니다(-t )
또는 인쇄(-l 또는 -n).
-u 정렬(-t 옵션 사용) 또는 인쇄(
-l 사용)에 마지막 수정 대신 마지막 액세스 시간을 사용합니다
옵션).
-i 각 파일에 대해 보고서의 첫 번째
열에 i-node 번호를 인쇄합니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.