~application/x-trash ディレクトリとそのサブディレクトリにあるファイルを確認する簡単な bash スクリプトがあります。
うまくいきますが、エコーは空です。。~またこれは無害に見えますが迷惑なことです。これをどのように避けることができますか?
スクリプト
#!/bin/sh
cd '/var/www/html/mypath/'
for d in $(find '/var/www/html/mypath/' -maxdepth 6 -type d)
do
echo $d
for f in $d'/'*.*~;
do FILE=$f;
echo 'file to be removed: '$FILE
done
done
サブディレクトリ dir の場合、dir に ~ ファイルがない場合、端末に次のものが表示されます。
削除するファイル:/var/www/html/mypath/../../../dir/*.*~
答え1
*~
名前が一致するファイル.*~
(通常は編集者が残したバックアップファイル)を探したいと仮定すると、次の単一の呼び出しfind
でその操作が実行されます。
find /var/www/html/mypath/ -type f \( -name '*~' -o -name '.*~' \) -print
-maxdepth 6
正しいと思われる場合は、次のように挿入できます。
find /var/www/html/mypath/ -maxdepth 6 -type f \( -name '*~' -o -name '.*~' \) -print
見つかったファイルを削除するには、-delete
コマンドの最後に追加します。
シェルがファイル名ワイルドカードパターンを名前リストに拡張できない場合は、拡張されていません。これがコードが得た結果を得る理由です。
答え2
以下は私の要件を満たしています。
#!/bin/sh
cd '/var/www/html/mypath/'
for i in `find '/var/www/html/mypath/' \( -name '*~' -o -name '.*~' \) -type f`; do
echo 'file to be removed: '$i
mv $i '/var/www/html/trashTest'
done