поиск файлов с одинаковым именем и сценарием postfix shell - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть такое требование:

  • найти, существуют ли два файла с одинаковым именем, исключая штамп с датой.(например: custompayment_24APR, custompayment_25APR) в данном каталоге.У меня есть файлы типа xxx_24Apr,xxx_25Apr... yyy_24Apr,yyy_25Apr, где xxx и yyy могут быть чем угодно ... Как я могу это сделать?
  • добавить строки из файла1 в файл2.(_24Apr - файл 1, а _25Apr - второй)
  • получить количество строк, начинающихся с определенного символа (указывается символ).

Может кто-нибудь помочь подойтис помощью сценария оболочки?Если вы можете помочь с поиском файлов, было бы здорово, а остальным я справлюсь.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Для поиска и сравнения частей файла

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

Для поиска последней части файла после "_"

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

Для подсчета файлов, которые начинаются, будет специальный символ

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

ИЛИ используя find

find . -type f -iname "character*" | wc -l
0 голосов
/ 28 апреля 2011

Еще одно использование для безопасной находки :

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/
...