Script
for DIR in *; do
[ -d "$DIR" ] && cat "$DIR"/*.xml > "$DIR.xml"
done
One-liner
for DIR in *; do [ -d "$DIR" ] && cat "$DIR"/*.xml > "$DIR.xml"; done
Como funciona
-
O Bash expande
*para todos os arquivos e diretórios no diretório atual. -
for DIR in *; do ... donepassa por eles e executa...para cada um.Em cada caso,
$DIRcontém o nome da entrada atual. -
[ -d "$DIR" ] && ...verifica se$DIRé de fato um diretório (e não um arquivo).Se for,
...será executado. -
cat "$DIR"/*.xml > "$DIR.xml"faz exatamente o que suas quatro linhas de código fazem.