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 ... done
passa por eles e executa...
para cada um.Em cada caso,
$DIR
conté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.