2011-04-28 35 views
0

查找文件我有這樣的要求:具有相同名稱和後綴的shell腳本

  • 發現是否有不包括日期戳存在同名的兩個文件。 (例如:custompayment_24APR,custompayment_25APR)在給定的目錄中。我有像xxx_24Apr,xxx_25Apr... yyy_24Apr,yyy_25Apr這樣的文件xxx和yyy可以是任何東西......我該怎麼做?
  • 將文件1的行追加到文件2。 (_24Apr是文件1,_25Apr是第二個)
  • 獲取以特定字符(指定字符)開始的行數。

有人可以幫助想出一個shell腳本?如果你能幫助找到文件的一部分將是偉大的,我會管理其餘的。

非常感謝!

回答

1

爲此開始將特殊字符「_」

$ echo "_${file1##*_}" 
_24APR 

要計算文件後,找到並比較文件的部分

$ file1=custompayment_24APR 
$ file2=custompayment_25APR 
$ echo ${file1%%_*} 
custompayment 
$echo ${file2%%_*} 
custompayment 
$ case "${file1%%_*}" in 
> "${file2%%_*}") echo "same";; 
> esac 
same 

要查找的文件的最後部分

shopt -s nullglob 
echo "character*" | wc -l 

或使用find

find . -type f -iname "character*" | wc -l 
+0

我有一個像xxx_24Apr文件,xxx_25Apr ... yyy_24Apr, yyy_25Apr其中xxx和yyy可以是任何東西..我該怎麼做? – 2011-04-28 10:38:32

+0

在評論中無法真正看到。在您的問題中發佈您的文件名樣本 – ghostdog74 2011-04-28 10:39:22

+0

我更新了問題,請參閱 – 2011-04-28 10:41:37

0

另一個用途爲safe find

append_duplicates_to_newest() 
{ 
    while IFS= read -r -d '' -u 9 
    do 
     prefix="${REPLY%_*}" 
     if [ "$prefix" = "$old_prefix" ] 
     then 
      cat -- "$old_file" >> "$REPLY" 
     fi 
     old_file="$REPLY" 
     old_prefix="$prefix" 
    done 9< <(find "/path/to/files/" -type f -printf '%f\0' | sort -z) 
} 

對於最後一個問題,假設字符存儲在$char

grep --count "^$char" -r /path/to/files/ 
相關問題