Bashシェルスクリプトを変更しようとするのに助けが必要です。
複数のファイルを含むディレクトリがあります。私にとって必要なのは、ファイルを繰り返し、ファイル名が特定のファイル名のセットにない場合は、ファイルの権限とモードを変更することです。
このような:
for my_file in `ls my_dir/*.so`
do
if [ $myy_file ! in ["a.so", "b.so"]]; then
chmod 777 $my_file
chown igor $my_file
fi
done
コレクションにない複数のファイルを確認する方がはるかに簡単です。次に、大きなファイル名セットの名前を比較します。
答え1
隠しファイルを処理したくない場合:
for f in my_dir/*.so; do
case $f in
(*/[ab].so) : ;;
(*) chmod 777 -- "$f"; chown igor -- "$f" ;;
esac
done
ファイル権限を次のように設定します。777話セキュリティホールをもたらし、chown
後でコマンドを無駄にする非常に悪い理想です。
答え2
ほとんどの場合、次の方法でifループ構造を回避できます。
chmod 777 -- my_dir/[^ab].so my_dir/*??.so
chown igor -- my_dir/[^ab].so my_dir/*??.so