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.