2016-03-03 2 views
-1

как объединить различные файлы в Unix на основе команды find, так что объединенные файлы присутствуют в соответствующем каталоге.Как найти и объединить файлы в unix

a1 - a1_1.xml , a1_2.xml --> full_a1.xml 
b1 - b1_1.xml , b1_2.xml --> full_b1.xml 

Здесь a1 и b1 каталоги.

ответ

1

Вы можете начать с этого:

DIRS=("a1" "b1") 
PATT="*.xml" 
for dir in "${DIRS[@]}" 
do 
    find "$dir" -name "$PATT" -exec cat {} > "$(pwd)/$dir/final_xml" \; 
done 

EDIT:

for dir in $(find . -type d) 
do 
    if [[ "$dir" == "." || "$dir" == ".." ]]; then 
     continue 
    fi 

    find "$dir" -maxdepth 1 -name "*.xml" -print0 | xargs -0 cat > "$dir/final_xml" 
done 
+0

он создает только один файл ... я хочу иметь два различных файла в обоих каталогах –

+0

@sunny Раджпал, Он работает правильно для меня. – sat

+0

Если я напрямую передаю путь к каталогу for for, он будет работать, потому что нет. Из каталогов может увеличиться –

Смежные вопросы