Existem várias maneiras de fazer isso, incluindo o seguinte (assumindo o GNU xargs
):
sed -e '/^[[:space:]]*$/d' -e 's/$/.txt/' fileNames.txt | xargs -rd '\n' touch --
Isso pressupõe que há apenas um nome de arquivo por linha no fileNames.txt. O script sed
exclui linhas em branco (graças a @rubynorails) e adiciona '.txt' ao final de cada nome de arquivo antes de direcioná-las para xargs touch
.
Usando a opção -d '\n'
com xargs (uma extensão GNU, que diz a xargs
para usar apenas nova linha ou '\ n' como delimitador em vez de espaço em branco, e desativa o processamento de citações), isso até lida com nomes de arquivos tem espaços e outros caracteres potencialmente problemáticos (exceto por \n
ou nova linha em si). por exemplo. se uma linha continha 'habilitado', sem -d '\n'
, dois arquivos ( abet
e able.txt
) seriam criados. Com ele, apenas um arquivo abet able.txt
será criado.