Um comando de pipe não funciona

0

Eu tentei executar este comando pipe e não funcionou.

find /home/siddath/enron -name "*" -print | \ parallel python email_parser.py {} > from_to.txt 
No command ' parallel' found, did you mean:
 Command 'parallel' from package 'parallel' (universe)
 Command 'parallel' from package 'moreutils' (universe)
 parallel: command not found

Eu instalei o paralelismo usando

sudo apt-get install parallel

A saída para apt-cache policy parallel perl foi:

parallel:
  Installed: 20130922-1
  Candidate: 20130922-1
  Version table:
 *** 20130922-1 0
        500 http://in.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
        100 /var/lib/dpkg/status
perl:
  Installed: 5.18.2-2ubuntu1
  Candidate: 5.18.2-2ubuntu1.1
  Version table:
     5.18.2-2ubuntu1.1 0
        500 htp://in.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        500 htp://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
 *** 5.18.2-2ubuntu1 0
        500 http://in.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

ao executar o comando find /home/siddath/enron | parallel python email_parser.py {} > from_to.txt , obtenho:

defined(@array) is deprecated at /usr/local/bin/parallel line 120.
    (Maybe you should just omit the defined()?)
defined(@array) is deprecated at /usr/local/bin/parallel line 580.
    (Maybe you should just omit the defined()?)
defined(@array) is deprecated at /usr/local/bin/parallel line 626.
    (Maybe you should just omit the defined()?)

qual é o problema?

Atualização: saída para type -a parallel .

parallel is /usr/local/bin/parallel
parallel is /usr/bin/parallel

Depois de alterar as permissões para / usr / local / bin / parallel: sudo chmod -x /usr/local/bin/parallel

siddath@SID:~/enronscript$ find /home/siddath/enron | parallel python email_parser.py {} > from_to.txt
bash: /usr/local/bin/parallel: Permission denied

Eu naveguei para o caminho da seguinte forma:

siddath@SID:/usr/local/bin$ find /home/siddath/enron | parallel python email_parser.py {} > from_to.txt 
bash: from_to.txt: Permission denied

Preciso criar um arquivo neste diretório para executar o comando find / parallel ou existe outra maneira de fazer isso funcionar?

    
por Madhumita 15.03.2016 / 07:28

1 resposta

4

O comando correto deve ser este:

find /home/siddath/enron | parallel python email_parser.py {} > from_to.txt

O que eu fiz?

  • Após o pipe, você escreveu \ parallel - é o mesmo que se você executasse ' parallel' , de ambas as maneiras, você inclui um espaço no começo como parte do comando. Claro que este comando não existe e, portanto, não pode ser encontrado. Simplesmente remover o \ resolve esse problema.
  • Você escreveu find /any/directory -name "*" -print , mas -print já é a ação padrão e, se nenhum filtro for especificado, ele localizará todos os arquivos e diretórios - da mesma forma que com este filtro curinga universal -name "*" . Então você pode omitir ambos os parâmetros e simplesmente escrever find /any/directory .
por Byte Commander 15.03.2016 / 08:07