rmワイルドカードはRaspberry Pi OSでは機能しません。

rmワイルドカードはRaspberry Pi OSでは機能しません。

次のディレクトリのリストがあります。

  0 -rw-r--r-- 1 root root      0 Sep  2 15:19 aws.greengrass.LambdaLauncher.log
  0 -rw-r--r-- 1 root root      0 Sep  2 15:19 aws.greengrass.LambdaRuntimes.log
  0 -rw-r--r-- 1 root root      0 Sep  2 14:53 aws.greengrass.Nucleus.log
 80 -rw-r--r-- 1 root root  75017 Sep  2 15:55 greengrass_2022_09_02_15_0.log
 40 -rw-r--r-- 1 root root  36930 Sep  2 16:50 greengrass_2022_09_02_16_0.log
216 -rw-r--r-- 1 root root 217065 Sep  2 20:40 greengrass_2022_09_02_20_0.log
 96 -rw-r--r-- 1 root root  92764 Sep  2 21:54 greengrass_2022_09_02_21_0.log
 64 -rw-r--r-- 1 root root  58307 Sep  2 22:57 greengrass_2022_09_02_22_0.log
 48 -rw-r--r-- 1 root root  46475 Sep  6 14:37 greengrass_2022_09_06_14_0.log
 16 -rw-r--r-- 1 root root  14845 Sep  6 17:57 greengrass_2022_09_06_17_0.log
 40 -rw-r--r-- 1 root root  39037 Sep  6 18:11 greengrass_2022_09_06_18_0.log
184 -rw-r--r-- 1 root root 186318 Sep  6 19:48 greengrass_2022_09_06_19_0.log
 12 -rw-r--r-- 1 root root  10793 Sep  6 20:25 greengrass_2022_09_06_20_0.log
124 -rw-r--r-- 1 root root 122363 Sep  6 21:43 greengrass.log

名前がgreengrassで始まるファイルを削除したいと思います。次のワイルドカードコマンドを試しましたが、何も機能しません。

sudo rm /greengrass/v2/logs/greengrass*.*
sudo rm /greengrass/v2/logs/greengrass*
sudo rm /greengrass/v2/logs/greengrass*.log

私は得る:

rm: cannot remove '/greengrass/v2/logs/greengrass*.*': No such file or directory

答え1

今起こっていることはすべて、グローバル拡張に関するものです。

実行時:

 sudo rm dir/*

sudoを実行しているシェルは、「*」ワイルドカード文字を拡張しようとします。ディレクトリが読み取れない場合、ワイルドカードはそのままsudoに渡されます。

sudoは実行され、rmrmdir/*はグローバル拡張を実行せず、シェル実行のみを実行します。 rmは*正当ですが、珍しいファイル名であるというファイルを探しています。

sudoを実行しているユーザーがディレクトリを読み取ることができる場合、acutall sudoコマンドは次のようになります。

sudo rm dir/filea dir/fileb dir/filec

これはうまくいきます。ルートをグローバルに拡張するには、次のようにシェルを使用する必要があります。

sudo sh -c "rm dir/*"

その後、sudoは "rm dir / *"コマンドを実行するルートとしてシェルを実行します。シェルはglobを拡張する方法を知っているので「rm dir/filea dir/fileb ...」になります。

答え2

一般ユーザーは/greengrass/v2/logsディレクトリを読むことができますか?そうでない場合は、シェルがファイルのリストと一致するように(ファイルを渡す前にsudo)ワイルドカードを拡張する必要があり、シェルがディレクトリのrm内容をリストできない場合はそうしません。

最も簡単な解決策は、おそらくsudo -sルートシェルを開き、rm /greengrass/v2/logs/greengrass*.*そのルートシェルで実行することです。その後、またはControl-Dを使用してexitルートシェルを終了し、通常に戻ります。

関連情報