Bash에서 파일 생성 날짜/시간 가져오기

Abdul Mateen 2023년6월20일
  1. 리눅스에서 파일 생성
  2. Linux에서 파일 생성 날짜/시간 가져오기
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개의 타임스탬프는 다음에 대한 정보를 저장합니다.

  1. 마지막 액세스 날짜 - atime
  2. 마지막 수정 날짜 - mtime
  3. 마지막 변경 날짜 - ctime

이러한 값은 struct stat라는 파일 특성을 갖는 구조로 반환됩니다. 관련 내용은 홈페이지에 설명되어 있습니다.

그러나 최신 파일 시스템(ext4, zfs, btrfs, JFSXFS)은 생성 타임스탬프를 별도의 필드에 저장합니다.

  1. ext4crtime
  2. zfscrtime
  3. XFScrtime
  4. btrfs오타임
  5. JFS - di_otime

위의 필드는 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.comreplit.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가지 방법을 설명했습니다. 사용자의 운영 체제가 이전 버전인지 최신 버전인지에 따라 다릅니다.

이전 버전의 경우 비기술적인 첫 번째 방법을 채택할 수 있습니다. 그렇지 않으면 관리가 운영 체제 내부에 있는 두 번째 및 세 번째 방법을 사용할 수 있습니다.

사용자는 관련 명령을 실행하여 생성 날짜 및 시간을 얻을 수 있습니다.

관련 문장 - Bash Date