削除するファイルとフォルダを含むブラックリストファイルから文字列を読みます。単純なファイル名では動作しますが、ワイルドカードでは動作しません。ワイルドカードを文字列変数に展開します
など。シェルにrm -rf !(abc|def)
と入力すると、これら2つのファイル以外のすべてが削除されます。このストリング!(abc|def)
をブラックリストに入れると、ストリングが評価されないため、機能しません。
私はeval
を使用しようとしましたが、期待どおりに動作しません。
#!/bin/bash
# test pattern (normally read from blacklist file)
LINE="!(abc|def)"
# output string
echo "$LINE"
# try to expand this wildcards
eval "ls $LINE"
# try with subshell
(ls $LINE)
これをどうすればいいですか?
「ブラックリストファイルから文字列を読み込んでいます」:どうですか?あなたのコードはこの部分を表示しません。 – sjsam
これには-regexと-deleteでfindを使うのが良いでしょう。 –
sjsam、私はこの部分を私の問題とは関係がないので見せていませんでした。私は問題を再現しやすくするために、切り捨てられたスクリプトを用意しました。 – user3150128