ls para corte -f string não está funcionando

5

Eu tenho um problema com a alimentação de cut output para ls .
Isso não funciona:

rep="S1_1000,0000-00-00c,0000-00-00d,0000-00-00e"  
ls tab_yeast/{'echo $rep | cut -f2- -d',''}*.tab.gz  
ls: cannot access tab_yeast/{0000-00-00c,0000-00-00d,0000-00-00e}*.tab.gz: No such file or directory

enquanto ls sobre essa string funciona:

ls tab_yeast/{0000-00-00c,0000-00-00d,0000-00-00e}*.tab.gz  

Alguma ideia?

    
por Leszek 21.02.2014 / 11:20

2 respostas

4

Eu não acredito que você possa aninhar comandos com expansões de chaves. Parece que só tem a capacidade de conter literais. Você deve ser capaz de utilizar eval para conseguir o que deseja.

Exemplo

$ a=1
$ b=5
$ echo {$a..$b}
{1..5}

Se você eval o echo :

$ eval echo {$a..$b}
1 2 3 4 5

Seu exemplo

$ ls -l tab_yeast
total 0
-rw-rw-r--. 1 saml saml 0 Feb 21 05:40 0000-00-00c.1.tab.gz
-rw-rw-r--. 1 saml saml 0 Feb 21 05:40 0000-00-00d.1.tab.gz
-rw-rw-r--. 1 saml saml 0 Feb 21 05:40 0000-00-00e.1.tab.gz
-rw-rw-r--. 1 saml saml 0 Feb 21 05:40 S1_1000.1.tab.gz

mostra expandido

$ eval echo tab_yeast/{'echo $rep | cut -f2- -d',''}*.tab.gz  
tab_yeast/0000-00-00c.1.tab.gz tab_yeast/0000-00-00d.1.tab.gz tab_yeast/0000-00-00e.1.tab.gz

seu comando modificado

$ ls -1 $(eval echo tab_yeast/{'echo $rep | cut -f2- -d',''}*.tab.gz)
tab_yeast/0000-00-00c.1.tab.gz
tab_yeast/0000-00-00d.1.tab.gz
tab_yeast/0000-00-00e.1.tab.gz
    
por 21.02.2014 / 11:37
0

No primeiro caso, $ rep é uma string, echo $rep | cut -f2- -d',' parece resultar em uma string e a extensão de chave não ocorre:

$ ls tab_yeast/{'echo $rep | cut -f2- -d',''}*.tab.gz
ls: tab_yeast/0000-00-00c,0000-00-00d,0000-00-00e*.tab.gz: Aucun fichier ou répertoire de ce type

$ ls tab_yeast/{0000-00-00c,0000-00-00d,0000-00-00e}*.tab.gz
ls: tab_yeast/0000-00-00c*.tab.gz: Aucun fichier ou répertoire de ce type
ls: tab_yeast/0000-00-00d*.tab.gz: Aucun fichier ou répertoire de ce type
ls: tab_yeast/0000-00-00e*.tab.gz: Aucun fichier ou répertoire de ce type
    
por 21.02.2014 / 11:45

Tags