Aqui está uma maneira de fazer o que você quer com um único arquivo (que chamaremos de $file
por enquanto) e imprimi-lo na saída padrão
# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $file"
# print a blank line
echo
# output the file
cat "$file"
Agora, para o que você realmente queria, coloque isso em um loop for
para iterar em todos os marcadores no diretório. Em seguida, imprima o resultado em um arquivo.
for file in *.markdown; do
# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $file"
# print a blank line
echo
# output the file
cat "$file"
# separate the files with another blank line
echo
done > writing.markdown
EDIT: Espere, não é isso que você queria! Para reverter o pedido, podemos usar o comando find
para encontrar todos os arquivos de remarcação e depois enviar a saída para sort -r
para obter a ordem de classificação inversa desejada. Finalmente, canalize isso em read
e loop. Além disso, precisaremos chamar basename
ao extrair a data do nome do arquivo, pois find
retornará um caminho em vez de um nome de arquivo.
find -name '*.markdown' -not -name 'writing.markdown' | sort -r | while read file; do
# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $(basename $file)"
# print a blank line
echo
# output the file
cat "$file"
# separate the files with another blank line
echo
done > writing.markdown
Como eles são muito difíceis de pesquisar no Google, estou incluindo um link para alguma documentação sobre Aqui Strings caso você não esteja familiarizado com eles.