A questão principal são as duas linhas
find . -name *.rpm > ~/rpm.txt
find . -name *.zip > ~/zip.txt
... e o modo como *.rpm
e *.zip
não são citados nessas linhas.
Isso significa que, por exemplo *.rpm
expandirá para file1.rpm file2.rpm
etc. (todos os nomes que correspondem ao padrão) antes find
é invocado mesmo. Isso provavelmente fará com que find
reclame sobre "opção desconhecida" (ou similar).
Em vez disso, você gostaria de passar os padrões de nome de arquivo não expandidos:
find . -name '*.rpm' > ~/rpm.txt
find . -name '*.zip' > ~/zip.txt
Isso faria seu script funcionar.
Sugestão:
#!/bin/sh
find /mydir/nextlevel/here -type f \( -name '*.rpm' -o -name '*.zip' \) -print >/newdir/myname
Isso combina todas as operações que o seu script está fazendo em um único comando que localiza os arquivos que têm os sufixos de nome de arquivo específicos e coleta seus nomes no arquivo /newdir/myname
.
A única diferença é que o caminho completo (incluindo /mydir/nextlevel/here
) seria incluído na listagem de cada arquivo e que os arquivos podem ser listados em uma ordem diferente.
O script a seguir corrigiria o caminho no arquivo de saída:
#!/bin/sh
cd /mydir/nextlevel/here &&
find . -type f \( -name '*.rpm' -o -name '*.zip' \) -print >/newdir/myname
O find
é adicionalmente realizado apenas se o cd
for bem-sucedido.