以下のスクリプトは、このエラーを与える:bashの - (その内容を含む)ディレクトリのリストを削除
rm: illegal option -- 4
rm: illegal option -- 5
rm: illegal option -- 4
rm: illegal option -- 3
rm: illegal option -- 2
スクリプト:
#!/bin/bash
keep_no=$1+1
cd "/mydirec/"
rm -rf `ls | sort -nr | tail +$keep_no`
私はNUMの引数を(受け入れるようにスクリプトをしたいと思います(スクリプト内で渡された番号 - 数値の高いディレクトリ名で降順に並べ替える)を除くすべてのディレクトリ(そのファイルを含む)を削除します。
すなわち/ mydirec /はこれらのDIRECの名前が含まれている場合:
53
92
8
152
77
とスクリプトが同じように呼び出されます。bashのdel.sh 2
を、次に/ mydirec /すべきことは、それらを削除するよう(これらdirecsが含まれています降順で上位2ではありません)。
152
92
誰かが構文を助けてくれますか?
rm -rf `ls | sort -nr | tail -n +$keep_no`
をしかし、lsの出力を解析することではないことをお勧めです:
このfindコマンドは、ディレクトリ*と**のみを検出し、カレントディレクトリ '.'も検索します。 – anubhava
この質問はディレクトリ名のみを要求します。あなたのもう一つのポイントは正しいです。私はそれを更新しました。 sedを使って現在のディレクトリを削除するようになりました。 –
OPはlsコマンドを使ってファイルとディレクトリの両方を削除しているようですが。 – anubhava