すべてが考慮されていることを確認するには、ほぼ毎週ビルド成果物を確認する必要があります。スクリプトは次のとおりです。このコマンドは実行できません。
#!/bin/bash
cd /mydir/nextlevel/here
find . -name *.rpm > ~/rpm.txt
find . -name *.zip > ~/zip.txt
cd ~/
cat rpm.txt zip.txt > artifacts.txt
rm rpm.txt zip.txt
mv artifacts.txt /newdir/myname
答え1
最大の問題は2行です。
find . -name *.rpm > ~/rpm.txt
find . -name *.zip > ~/zip.txt
*.rpm
...そして*.zip
道といいえこのセリフを引用してください。
これは、たとえばetc(パターンに一致するすべての名前)*.rpm
に拡張されることを意味します。file1.rpm file2.rpm
今後 find
電話もしました。これにより、find
「不明なオプション」(または同様のオプション)に関する苦情が発生する可能性があります。
代わりに、拡張されていないファイル名パターンを渡そうとします。
find . -name '*.rpm' > ~/rpm.txt
find . -name '*.zip' > ~/zip.txt
これにより、スクリプトが正しく機能します。
提案:
#!/bin/sh
find /mydir/nextlevel/here -type f \( -name '*.rpm' -o -name '*.zip' \) -print >/newdir/myname
これは、スクリプトが実行するすべての操作を特定のファイル名サフィックスを持つファイルを検索し、ファイルからその名前を収集する1つのコマンドにまとめます/newdir/myname
。
唯一の違いはいっぱい含まれるパスは/mydir/nextlevel/here
各ファイルのリストに含まれており、ファイルは異なる順序でリストすることができます。
次のスクリプトは出力ファイルのパスを変更します。
#!/bin/sh
cd /mydir/nextlevel/here &&
find . -type f \( -name '*.rpm' -o -name '*.zip' \) -print >/newdir/myname
今もfind
続いています。ただ成功したらcd
。
答え2
このコマンドは、実行中のすべての操作を実行します。
find /mydir/nextlevel/here \( -name "*.rpm" -o -name "*.zip" \) \
> /newdir/myname/artifacts.txt