簡體   English   中英

在linux中將日期附加到文件名

[英]Append date to filename in linux

我想在文件名(“somefile.txt”)旁邊添加日期。 例如: somefile_25-11-2009.txt 或 somefile_25Nov2009.txt 或任何類似的東西

也許腳本會在終端窗口中執行或執行某些命令。 我正在使用 Linux(Ubuntu)。

提前致謝。

哦,我差點忘了添加腳本或命令應該在每次要將文件保存到特定文件夾但仍保留以前的文件時將文件名更新為新日期。 所以最終文件夾中會有這樣的文件: filename_18Oct2009.txt , filename_9Nov2009.txt , filename_23Nov2009.txt

您可以使用backticks

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

產量:

myfilename-25-11-2009

這里有兩個問題。

1. 以字符串形式獲取日期

這很容易。 只需使用帶有+選項的date命令。 我們可以使用反引號來捕獲變量中的值。

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

您可以使用日期手冊頁中詳述的不同%選項來更改日期格式。

2. 將文件拆分為名稱和擴展名。

這有點棘手。 如果我們認為他們只會是一個. 在文件名中,我們可以使用cut. 作為分隔符。

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

但是,這不適用於多個. 在文件名中。 如果我們正在使用bash - 您可能正在使用 - 我們可以使用一些bash 魔法,讓我們在進行變量擴展時匹配模式

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

把它們放在一起,我們得到:

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

如果我們不太擔心可讀性,我們會在一行上完成所有工作(使用不同的日期格式):

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

我在 bash 中使用這個腳本:

#!/bin/bash

now=$(date +"%b%d-%Y-%H%M%S")
FILE="$1"
name="${FILE%.*}"
ext="${FILE##*.}"

cp -v $FILE $name-$now.$ext

此腳本將 filename.ext復制到 filename-date.ext,還有另一個filename.ext移動到 filename-date.ext,您可以從這里下載它們。 希望你覺得它們有用!!

我在 raspberry pi 中使用它,第一個答案對我不起作用,也許是因為我輸入錯誤或什么? 我不知道。 所以我結合了上面的答案並想出了這個:

now=$(date +'%Y-%m-%d')
geany "OptionalName-${now}.txt"

如果你想使用 geany 或其他任何東西

在此處輸入圖片說明 在此處輸入圖片說明

完全符合您的規格的更復雜的解決方案

echo `expr $FILENAME : '\(.*\)\.[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*\.\([^.]*\)'`

其中第一個“expr”提取沒有擴展名的文件名,第二個“expr”提取擴展名

您可以在subshel​​l 中調用date命令的文件名旁邊添加日期。

$()的大括號或反引號 ( `…` ) 之間調用的具有所需格式選項的date命令在子 shell 中執行,然后將輸出放置在原始命令中。

$(...)更受歡迎,因為 in 可以嵌套。 所以你可以在另一個替換中使用命令替換。

問題請求的解決方案

$ echo somefile_$(date +%d-%m-%Y).txt
somefile_28-10-2021.txt

$ echo somefile_$(date +%d%b%Y).txt
somefile_28Oct2021.txt

date命令帶有許多格式化選項,允許您根據需要自定義日期輸出。

  • %D – 以 mm/dd/yy 格式顯示日期(例如:10/28/21)
  • %Y – 年份(例如:2021)
  • %m – 月份(例如:10)
  • %B – 完整字符串格式的月份名稱(例如:十月)
  • %b – 縮短字符串格式的月份名稱(例如:Oct)
  • %d – 月份中的第幾天(例如:28)
  • %j - 一年中的某一天(例如:301)
  • %u – 星期幾(例如:4)
  • %A – 完整字符串格式的工作日(例如:星期四)
  • %a – 縮短格式的工作日(例如:Thu)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM