2016-07-24 55 views
-1

編寫一個bash腳本,用於將文件複製到新副本具有相同名稱的目錄中,但將時間戳附加到文件名(擴展名之前)。如何使用包含文件名中原始文件時間戳的新名稱創建文件副本?

我該如何做到這一點?

+1

「timestamp」是指當前日期或文件創建日期? –

+0

你可以發佈腳本的源代碼嗎?時間戳如何實際格式化?你可以按照StackOverflow發佈指導原則嗎? –

回答

0

假設

var="/path/to/filename.ext" #path is optional 

var1="${var##*/} 
cp "$var" "/path/to/new/directory/${var1%.*}$(date +%s).${var1##*.}" 

更多關於${var%.*} & ${var##*.},看到[ shell parameter expansion ]


日期手冊頁說:

%s seconds since 1970-01-01 00:00:00 UTC 
0
file="file_to_copy" 
cp $file "/path/to/dest/$file"`stat --printf "%X" $file` 

你可以看一下統計(man 1 stat)的手冊頁選擇適合您的需求,在適當的時間戳(創建,上次訪問等)

在本例中,我選擇%X表示time of last access, seconds since Epoch

1

插入的文件本身的時間戳到原來的文件名,以及保存該時間戳的目標文件,在GNU環境以下工作:

file="/some/dir/path-to-file.xxx"; 
cp -p "$file" "${file%.*}-$(date -r"$file" '+%Y%m%d-%H%M%S').${file##*.}"

加入適量使用基本名稱的(1)命令插入混音將允許您將文件複製到不同的目錄中。

在GNU/Linux環境以外這樣做更具挑戰性,並且您必須開始訪問awk,perl,python等語言,以取代date -r命令。

相關問題