2014-06-11 26 views
0

我有一些操作需要在特定日期上次修改的文件上進行。我想獲取日期,將其存儲在一個字符串中,然後分割它以測試日期是否與我想要的相符。 到目前爲止,我一直在嘗試這樣的事情:字符串中的股票日期然後將其分割以進行測試

#!/bin/bash 

for i in {45..236}; do 
    nom=M$i 
    chem=/Users/nfs/helene/soft/metAMOS-1.5rc3/$nom.fastq/Assemble/out 
    if [ -e $chem ]; then 
     IN= $(date -r $chem) 
     arr=(${IN//\/}) 
     if [[ ${arr[1]} == 'juin' && ${arr[2]} == '10' ]]; then 
      echo $nom 
      #cp $chem/proba.faa /Users/nfs/helene/metagenomes/DB/$nom.faa 
     fi 
    fi 
done 
exit 0 

但好像日期沒有很好地$ IN放養,我不知道的空間,無論劈裂..

+0

你可以舉一個預期輸出的例子。此外,爲什麼如果你已經搜索過,你必須測試的日子與你想要的一樣? –

+0

與我的M $ i名稱對應的所有目錄都不是在同一天最後修改的,我只想從選定日期修改的目錄複製文件(請參見注釋行),因此我必須對其進行測試。 – alpagarou

+0

所以你正在尋找修改而不是文件的目錄? –

回答

0

也許簡單的錯誤是,你沒有把你的任務放在=附近。它必須是:

IN=$(date -r $chem) 

而且這裏有一個簡單的建議:

#!/bin/bash 

for i in {45..236}; do 
    nom="M${i}" 
    chem="/Users/nfs/helene/soft/metAMOS-1.5rc3/${nom}.fastq/Assemble/out" 
    if [[ -e $chem ]]; then 
     read month day < <(exec date -r "$chem" '+%b %d') 
     if [[ $month == 'Jun' && $day == 10 ]]; then 
      echo "$nom" 
      # cp "$chem/proba.faa" "/Users/nfs/helene/metagenomes/DB/$nom.faa" 
     fi 
    fi 
done 

exit 0 

    *    的格式列表,請參閱date --help
    *     <()是進程替代的一種形式。檢查Bash的手冊。
    *     當他們有變量以避免分詞時,始終將您的參數置於雙引號內。

相關問題