Uma abordagem simples é:
ls $(< file )
mas tem alguns problemas, por ex. com espaços em nomes de arquivos. Então é melhor usar outra abordagem:
xargs -d$'\n' ls < file
Eu sei que posso fazer tr a b < file
, mas como faço isso para ls
? Por exemplo, como alimentar ls -l
uma lista de arquivos de um 'arquivo'. Eu tentei o abaixo e não funcionou.
$ cat>test
A
B
C
$ ls -l < test
Não estou claro sobre o que "< <" ou aqui o documento é usado para.
Um dos exercícios da minha classe é usar o vi para criar um arquivo com “:” na linha 1 e “6/3” na linha 2. Usando a linha 1 como delimitador e a linha 2 como o campo, corte e exibir column2 de um arquivo.
Eu deveria fazer um loop e ler as duas linhas em uma variável? Eu uso sed -n '#p' (file)
? Existe uma solução elegante de 1 linha?
Uma abordagem simples é:
ls $(< file )
mas tem alguns problemas, por ex. com espaços em nomes de arquivos. Então é melhor usar outra abordagem:
xargs -d$'\n' ls < file
ls
não lê da entrada padrão, portanto, o redirecionamento de entrada não faz nada. O que você quer é a substituição de comandos.
ls -l 'cat list'
ou
ls -l $(cat list)
Aqui, os documentos são usados para redirecionar a entrada padrão para cadeias fixas fornecidas no script, em vez de um arquivo separado. Você também pode fazer isso a partir da linha de comando, mas isso tem um valor limitado e não é comum.
Isso não faz sentido.
Responda a primeira parte:
você pode usar while
loop para passar o conteúdo do arquivo para o 'ls' commnad.
while read line ; do
ls -l $line
done < file
maneira suja de fazer isso:
counter=1
while read line ; do
if [ $counter -eq 1 ] ; then
delimiter=$line
counter=$((counter+1))
elif [ $counter -eq 2 ] ; then
field=$line
counter=$((counter+1))
else
echo File ended.
fi
done < inputfile
Tags cut