2009-11-25 4 views
16

파일 이름 ("somefile.txt") 옆에 날짜를 추가하고 싶습니다. 예 : somefile_25-11-2009.txt 또는 somefile_25Nov2009.txt 또는 그 효과가있는 항목리눅스에서 파일 이름에 날짜를 붙이십시오.

스크립트가 터미널 창에서 수행 할 수도 있고 명령을 입력 할 수도 있습니다. 나는 리눅스 (우분투)를 사용하고있다.

미리 감사드립니다.

오우 나는 스크립트 나 명령이 파일을 특정 폴더에 저장하려고하지만 항상 이전 파일을 유지하려고 할 때마다 새 날짜로 업데이트해야한다고 덧붙였다. 따라서 폴더에 다음과 같은 파일이 있습니다. filename_18Oct2009.txt, filename_9Nov2009.txt, filename_23Nov2009.txt

+4

대신 DD-MM-YYYY의-MM-DD YYYY는 파일 이름의 사전 편찬 종류도에 얻을 할 수 있습니다 시간순으로 정렬하십시오. – laalto

답변

20

backticks를 사용할 수 있습니다.

$ echo "myfilename-"`date +"%d-%m-%Y"` 

수익률 :

myfilename-25-11-2009 
+0

이 옵션은 파일 이름에 날짜를 추가합니다. 예를 들어 날짜가 파일 이름과 확장자 사이에 있어야합니다. –

+5

이것은 나를 위해 일했다 :'echo test> "data-csv -"\'날짜 + "% Y- % m- % d"\' ".txt"' –

+1

또는 :'echo test> "data-csv-" \\ date \ "% Y- % m- % d.txt"\'' –

10
cp somefile somefile_`date +%d%b%Y` 
31

여기에 두 가지 문제가있다.

1.

문자열

이 매우 쉽기 때문에 날짜를 가져옵니다. + 옵션과 함께 date 명령을 사용하기 만하면됩니다. 우리는 백틱을 사용하여 변수의 값을 캡처 할 수 있습니다.

$ DATE=`date +%d-%m-%y` 

당신은 date man page에 설명 된대로 다른 % 옵션을 사용하여 날짜 형식을 변경할 수 있습니다.

2. 이름과 확장명으로 파일을 분할하십시오.

이것은 약간 까다 롭습니다. 파일 이름에 .이 하나만 있다고 생각하면 cut.을 구분 기호로 사용할 수 있습니다.

$ NAME=`echo $FILE | cut -d. -f1 
$ EXT=`echo $FILE | cut -d. -f2` 

그러나이 방법은 파일 이름에 .을 여러 개 사용할 경우 작동하지 않습니다. - 당신은 아마 - 우리가 bash를 사용하는 경우 우리는 약간의 bash magic that allows us to match patterns when we do variable expansion 사용할 수 있습니다

$ FILE=somefile.txt    
$ NAME=${FILE%.*} 
$ EXT=${FILE#*.} 
$ DATE=`date +%d-%m-%y`   
$ NEWFILE=${NAME}_${DATE}.${EXT} 
$ echo $NEWFILE     
somefile_25-11-09.txt       

을 우리가 가독성에 대해 덜 걱정한다면 우리는 모든 수행

$ NAME=${FILE%.*} 
$ EXT=${FILE#*.} 

이 하나로 모으기 우리가 얻을 (다른 날짜 형식을 가진) 한 줄에 작업 :

$ FILE=somefile.txt 
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.} 
$ echo $FILE         
somefile_25Nov09.txt 
+0

Dave에게 감사하지만 어떻게 또는 어디에서이 스크립트를 실행합니까? Linux를 처음 사용하니 용서해주십시오. – sami

+0

할 수있는 일에 대해 더 자세히 설명해 주시겠습니까? 그래서 당신은이 방법으로 스탬프 처리 할 디렉토리에 파일을 가지고 있습니다. 매번 동일한 이름을 가진 파일 하나 일 뿐이며 다른 이름의 파일이 될 수 있습니까? –

+1

나는 나의 질문을 위에 편집했다, 그것을 보라. – sami

0
완전히 사양과 일치

좀 더 복잡한 솔루션

첫 번째 'expr이'확장자가없는 파일 이름을 추출
echo `expr $FILENAME : '\(.*\)\.[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*\.\([^.]*\)'` 

은, 두 번째 'EXPR은'확장자를 추출

관련 문제