2010-11-17 67 views
0

我想寫一個bash腳本,它以$ 1的形式接收文件,然後複製它並在文件的末尾添加年份,月份和日期。所以例如,如果我有一個文件foo.txt它會變成foo.txt.2010.11.16。我不是真的100%確定如何做到這一點,有什麼建議嗎?bash腳本爲文件上的待定日期

+0

「到的端部該文件「 - 顯然你的意思是文件名*末尾。 – 2010-11-17 03:49:37

回答

1

您可以使用$(date ...)將當前日期轉換爲環境變量。

以下腳本允許您傳遞任意數量的文件名,它會嘗試將它們全部複製到附加日期的類似文件中。

得到日期一旦萬一您嘗試在午夜時分運行它,並且您希望它們全都獲得相同的日期,即使您在此過程中進入了第二天。

#!/usr/bin/bash 

if [[ $# -lt 1 ]] ; then 
    echo 'Usage: datecp <filename> ...' 
    exit 1 
fi 

dt=$(date +%Y.%m.%d) 
while [[ $# -ne 0 ]] ; do 
    if [[ ! -f "$1" ]] ; then 
     echo 'Warning:' $1 'is not a regular file, not copied' 
    else 
     newf="$1.$dt" 
     cp "$1" "$newf" 
     echo "$1" '-->' "$newf" 
    fi 

    shift 
done 

輸出爲最後一個是沿着線:

pax> datecp 
Usage: datecp <filename> ... 

pax> datecp xyz 
xyz --> xyz.2010.11.17 

pax> datecp xyz abc 
xyz --> xyz.2010.11.17 
abc --> abc.2010.11.17 

pax> ./qq.sh xyz qwert abc 
xyz --> xyz.2010.11.17 
Warning: qwert is not a regular file, not copied 
abc --> abc.2010.11.17 
3

簡易型:

#!/bin/bash 
cp "$1" "$1".`date +%Y.%m.%d` 

票友版本:

#!/bin/bash 
# 
# date_tag_files file1 [file2 file3 ...] 
# 
for f in $* 
do 
    cp "$f" "$f".`date +%Y.%m.%d` 
done 
+0

非常感謝你。 – brian 2010-11-17 02:37:01