Bash에서 파일 생성 날짜/시간 가져오기
이 튜토리얼은 Bash에서 파일 생성 날짜/시간을 얻는 방법을 알려줍니다. 이전 시스템에서 파일 생성을 간략하게 소개하면서 논의를 시작하겠습니다.
나중에 우리는 Bash에서 파일 생성을 배울 것입니다. 마지막으로 Bash에서 파일 생성 날짜/시간을 가져오는 다양한 방법에 대해 설명합니다.
리눅스에서 파일 생성
Linux에서 파일을 만드는 방법에는 여러 가지가 있습니다. 파일 생성을 위해 쉘 또는 데스크톱 파일 관리자를 사용할 수 있습니다.
이 문서에서는 셸 명령을 사용하여 Bash에서 파일을 만드는 방법에 중점을 둘 것입니다.
터치
명령 사용
Linux에서는 touch
명령을 사용하여 새 파일을 만들 수 있습니다. touch
명령의 구문은 touch filename
입니다.
파일을 만들려면 이름을 ABC.XYZ
로 지정합니다. 우리는 다음과 같이 작성해야 합니다.
$ touch ABC.XYZ
이 명령은 ABC.XYZ
라는 빈 파일을 생성합니다. 현재 디렉토리에서 ls
명령을 실행하여 파일을 볼 수 있습니다(만든 경우).
cat
명령 사용
cat
명령을 사용하여 새 파일을 만들 수 있습니다. 리디렉션 작업을 사용자의 입력을 새 파일로 가져오는 것과 결합할 수 있습니다.
cat
명령은 사용자에게 텍스트를 입력하라는 메시지를 표시합니다. 사용자는 다음 행으로 이동하기 위해 리턴 키를 입력할 수 있습니다.
이 명령을 마치려면 Ctrl+D를 누르십시오. 사용자가 입력한 전체 텍스트는 한 줄씩 파일에 저장됩니다. 예를 참조하십시오:
$ cat > my_file.txt
Welcome to Bash shell!
The text entered here will be written into a text file.
Ctrl+D
마지막 명령문은 작성되지 않고 명령을 종료하기 위해 사용자가 누르는 키 조합입니다. 이에 대한 응답으로 my_file.txt
라는 텍스트 파일에 다음 두 줄이 작성됩니다.
리디렉션 연산자 사용
리디렉션 연산자만 사용하여 빈 파일을 만들 수 있습니다. 리디렉션 연산자 다음에 파일 이름을 입력하면 빈 텍스트 파일이 생성됩니다.
예를 들어:
$ > my_file.txt
다시 ls
명령을 사용하여 파일 생성을 확인할 수 있습니다. 동일한 이름을 가진 파일(여기서는 my_file.txt,
)이 이미 존재할 수도 있습니다.
이 경우 명령은 파일의 이전 내용을 지우고 my_file.txt
라는 이름의 빈 파일이 있게 됩니다.
이전 콘텐츠가 있는지 또는 제거되는지 확인하고 확인해야 합니다. cat
명령을 사용하여 파일 내용을 읽습니다.
$ cat my_file.txt
파일 이름, 디렉토리 등의 철자와 같이 잘못된 것이 없으면 파일이 비어 있습니다.
echo
명령 사용
echo
명령은 문자열을 인수로 사용하여 출력으로 표시합니다. 예를 들어:
$ echo "This is the first file"
This is the first file
echo
명령과 리디렉션 연산자 뒤에 일부 내용을 작성하여 전달된 내용으로 새 파일을 만들 수 있습니다. 이 경우에도 파일이 이미 존재하면 명령이 이전 내용을 제거합니다.
예를 참조하십시오:
$ echo "This is the First file" > firstFile.txt
이 echo
명령의 결과는 echo
에 대한 인수로 전달된 텍스트를 포함하는 새 파일을 생성합니다. Bash에서 파일을 생성하는 모든 방법입니다.
자세한 내용을 읽으려면 이 웹사이트를 클릭하십시오.
Linux에서 파일 생성 날짜/시간 가져오기
파일을 성공적으로 생성한 후 다음 단계는 파일 생성 날짜와 시간을 찾는 것입니다. 대부분의 이전 시스템은 파일 생성 날짜를 저장해야 하는 이전 파일 시스템 버전을 실행합니다.
POSIX 표준은 각 파일에 대해 저장된 3개의 고유한 타임스탬프 값만 지정했기 때문에 파일 시스템이 그 이상을 지원하기 위한 요구 사항이 더 이상 없습니다. 즉, 생성 시간이 없습니다.
이 3개의 타임스탬프는 다음에 대한 정보를 저장합니다.
- 마지막 액세스 날짜 -
atime
- 마지막 수정 날짜 -
mtime
- 마지막 변경 날짜 -
ctime
이러한 값은 struct stat
라는 파일 특성을 갖는 구조로 반환됩니다. 관련 내용은 홈페이지에 설명되어 있습니다.
그러나 최신 파일 시스템(ext4
, zfs
, btrfs
, JFS
및 XFS
)은 생성 타임스탬프를 별도의 필드에 저장합니다.
위의 필드는 inode
파일에 데이터를 저장합니다. Bash에서 파일 생성 날짜/시간을 얻는 방법에는 3가지가 있습니다.
첫 번째는 매우 조잡하고(기술적이지 않음) 이전 운영 체제에서 작동할 수 있는 반면, 다음 두 개는 기술적이지만 고급 운영 체제/최신 버전에서만 사용할 수 있습니다.
파일 이름 사용
이미 논의한 바와 같이 stat
명령은 이전 운영 체제에서 3개의 타임스탬프를 표시하며 파일 생성과 관련된 타임스탬프는 없습니다. 그러나 사용자(파일 작성자)는 생성 시간을 파일 이름과 연결할 수 있으며 파일 이름이 수정되지 않은 경우 유효합니다.
예를 들어:
touch data1_18_oct_2022_10_11_AM
touch data2_18_oct_2022_11_20_AM
...
ls -l
출력:
-rwxrwxrwx 1 root root 0 Oct 18 05:16 data1_18_oct_2022_10_11_AM
-rw-r--r-- 1 14079 14079 0 Oct 18 05:16 data2_18_oct_2022_11_20_AM
...
-rwxrwxrwx 1 root root 69 Oct 18 05:16 main.bash
출력에서 파일 생성 날짜와 시간은 파일 이름과 함께 표시됩니다(일반적으로 사람들은 data1
, data2
등과 같은 파일 이름을 갖습니다.)
stat
명령 사용
stat
명령은 파일 생성 날짜/시간을 얻는 데 간단합니다. 이전 버전은 3개의 타임스탬프 값을 제공합니다.
이러한 타임스탬프 값은 파일이 마지막으로 액세스된 시간, 파일 데이터가 마지막으로 수정된 시간 및 파일 상태가 마지막으로 변경된 시간입니다. 그러나 새 운영 체제 버전에서는 파일의 생성/생성 시간도 제공합니다.
Bash에서 새 파일을 생성하고 날짜/시간을 가져와서 확인해보자.
touch f1
stat f1
touch f2
cat f2>f1
touch f1
stat f1
출력:
Access: 2022-10-17 15:24:16.676971765 +0000
Modify: 2022-10-17 15:24:16.676971765 +0000
Change: 2022-10-17 15:24:16.676971765 +0000
Birth: 2022-10-17 15:24:16.676971765 +0000
Access: 2022-10-17 15:24:16.684972083 +0000
Modify: 2022-10-17 15:24:16.684972083 +0000
Change: 2022-10-17 15:24:16.684972083 +0000
Birth: 2022-10-17 15:24:16.676971765 +0000
위의 코드에서 먼저 touch
명령을 사용하여 f1
파일을 생성한 다음 stat
명령을 사용하여 생성 날짜/시간을 확인합니다. 그런 다음 f2
라는 다른 파일을 만듭니다.
cat
과 >
를 사용하여 f1
끝에 f2
의 내용을 추가합니다. 그런 다음 다시 f1
을 만들고 생성 날짜/시간을 확인합니다.
출력을 자세히 살펴보면 파일 f1
의 액세스
날짜/시간과 파일 f1
의 생년월일/시간이 동일하다는 것을 알 수 있습니다. 즉, 두 파일이 동일한 날짜/시간에 생성되었음을 의미합니다. .
참고: 새 OS 버전을 지원하는
jdoodle.com
및replit.com
에서 스크립트를 실행했습니다. 이러한 온라인 컴파일러에서 스크립트를 확인할 수도 있습니다.
debugfs
명령 사용
debugfs
명령은 ext4
파일 시스템에서도 사용할 수 있습니다. 이 명령을 사용하여 파일 생성 날짜를 찾을 수 있습니다. debugfs
명령의 주요 목적은 파일 시스템을 디버그하는 것입니다. 그러나 이 명령을 사용하여 파일 생성 날짜를 찾을 수도 있습니다.
먼저 ls
명령으로 볼 수 있는 파일의 inode
번호가 필요합니다. -i
플래그는 ls
가 파일의 노드 번호를 인쇄하도록 합니다.
$ ls -i ./file
5118705 ./file
df
는 파일 시스템을 여는 데 사용할 수 있는 명령입니다.
~ $ df ./file
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 26046564 8380600 16338936 34% /
다음으로 이 정보를 debugfs
명령에 전달하고 구문은 debugfs -R' stat <inode>'/dev/sdX
입니다. 여기서 inode
는 파일 inode
이고 /dev/sdX
는 파일의 파일 시스템입니다.
$ sudo debugfs -R 'stat <5118705>' /dev/sda2
debugfs 1.46.4 (18-Aug-2021)
Inode: 5118705 Type: regular Mode: 0644 Flags: 0x80000
Generation: 2975709199 Version: 0x00000000:00000001
User: 1000 Group: 1000 Project: 0 Size: 8
File ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x61bc31c8:19fee850 -- Fri Oct 14 06:44:24 2022
atime: 0x61bc3224:7f8fe250 -- Fri Oct 14 06:45:56 2022
mtime: 0x61bc31c8:19fee850 -- Fri Oct 14 06:44:24 2022
crtime: 0x61bc2b65:71f8e150 -- Fri Oct 14 06:17:09 2022
Size of extra inode fields: 32
Inode checksum: 0x5ddd5b4b
EXTENTS:
(0):5279293
위에 보이는 crtime
필드에는 파일 생성 시간이 있습니다. 파일 생성 시간 Fri Oct 14 06:17:09 2022
은 파일이 생성된 정확한 날짜입니다.
그러나 ctime
필드는 비슷해 보이지만 다르다는 점에 유의하십시오. crtime
필드에 포함된 시간은 파일 권한 변경과 같은 파일의 마지막 상태 변경입니다.
이 기사에서는 파일 생성 날짜 및 시간을 가져오는 3가지 방법을 설명했습니다. 사용자의 운영 체제가 이전 버전인지 최신 버전인지에 따라 다릅니다.
이전 버전의 경우 비기술적인 첫 번째 방법을 채택할 수 있습니다. 그렇지 않으면 관리가 운영 체제 내부에 있는 두 번째 및 세 번째 방법을 사용할 수 있습니다.
사용자는 관련 명령을 실행하여 생성 날짜 및 시간을 얻을 수 있습니다.