フォルダ内のすべてのファイルを一覧表示し、ファイル名が「C」で始まる場合は、権限を777に変更し、「F」で始まるファイルを削除するシェルスクリプトを作成するのに役立ちます。
上記の問題の私のコードは次のとおりです。
for item in *
do
if [ -f $item ]
then
echo $item
fi
if [ $item c* ]
then
chmod 777 -f c*
echo $item
fi
if [ $item f* ]
then
rm -v f*
echo $item
fi
done
訂正してください
答え1
これはあなたの問題に対する答えではありません。あなたの質問に対する答えは次のとおりです(いくつかの書式が必要であり、コメントに許可されているよりも多くのスペースが必要です)。
これが宿題である場合はこれを明示する必要があり、他の人に問題を解決するように頼まないでください。
宿題のように見えるので、課題の概念はおそらく「仕事を終わらせる」ことではなく、プログラミングと思考を教えることなので、これらの質問に答えるのに適したチャンネルではありません。
3-ここでできることは、質問をさまざまな部分に分割してから、次のように質問することです。
- すべてのファイルをどのようにリストしますか? 、
- パターンを使って検索するには?
- ファイルの一部をフィルタリングした後にファイルにコマンドを適用するにはどうすればよいですか?
- これを行うためにシェルコマンドを使用しますか?または
- bashをプログラミング言語として使用できますか?
プログラミングループ、ケースの説明、ifワークフローに関する課題があり、それについて具体的な質問がある場合は、Stack Overflowがより良い場所になる可能性があります。
Linuxを初めて使用していて、コマンドまたはパイプの魔法またはシェルスクリプトを使用してこれらのコマンドを自動化する方法(プログラミングではなくパイプ)がまだわからない場合は、フィルタリングとgrep
実行の使用について学ぶことができますxargs
。そして実行を使用してくださいfind … -exec
。
たとえば、Linuxではファイルを一覧表示しls
てフィルタリングできますgrep
。ここでは、「次から始まる」正規表現を見つける必要があります。
これを知ったら、ループに入れるかパイプに入れるかを決める必要がありますxargs
(電力を学ぶことをお勧めしますxargs
)。
正しい道に導く古典的な冗談は次のとおりです。
ls | grep "^c" | xargs -I{} echo "wanted_command -options command {}"
したがって、これを自動化するスクリプトを作成できます。
if
これが割り当ての場合は、各/ステートメントcase
で適切な関数が呼び出されるように、各タスクの関数を生成することをお勧めします(シェルで関数の生成について読む必要があります)。