別のdirsにない1つのディレクトリ内のファイルを検索しますuTorrent
スクリプトは、ファイル名に '[]
'のような文字が含まれている場合を除いて動作します。私は問題が "-name
"は "$nombre
"と解釈すると思います。どうすればこの動作を無効にできますか? nombre=$(basename "$torrent" .torrent | sed 's/\[/\\[/g; s/\]/\\]/g')
私はこのbashスクリプトを書いた
をしかし、今、私は別の問題を抱えている:
まあ、私はこれに解決策を見つけました。私はuTorrentのデータフォルダにデータが存在しないトレントファイルを削除します。
私は私の以前のスクリプト(私が最初をテストしていますので、このスクリプトは何も削除されません)に変更しました:
#!/bin/bash
DIR_TORRENTS="/home/simon/.wine/drive_c/users/simon/Datos de programa/uTorrent"
DIR_DESCARGA=/home/simon/torrent-descargas/
DIR_TEMPORAL=/home/simon/torrent-temporal/
cd "$DIR_TORRENTS"
for torrent in *.torrent
do
nombre=$(basename "$torrent" .torrent | sed 's/\[/\\[/g; s/\]/\\]/g')
if ! find "$DIR_TEMPORAL" "$DIR_DESCARGA" -maxdepth 2 -name "$nombre" &> /dev/null
then
echo "$torrent"
fi
done
をしかし、なぜそれが、何も印刷していませんか?
まあ、これはあまりにも解か:
#!/bin/bash
DIR_TORRENTS="/home/simon/.wine/drive_c/users/simon/Datos de programa/uTorrent"
DIR_DESCARGA=/home/simon/torrent-descargas/
DIR_TEMPORAL=/home/simon/torrent-temporal/
rm -f /tmp/torrent_existentes
cd "$DIR_TORRENTS"
for torrent in *.torrent
do
nombre=$(basename "$torrent" .torrent | sed 's/\[/\\[/g; s/\]/\\]/g')
find "$DIR_TEMPORAL" "$DIR_DESCARGA" -maxdepth 2 -name "$nombre" -printf '%f.torrent\n' >> /tmp/torrent_existentes
done
for torrent in *.torrent
do
if ! grep -Fq "$torrent" /tmp/torrent_existentes
then
rm "$torrent"
fi
done
しかし、もっと単純に、このスクリプトを書くためにどのような方法があるの?あなたはノンブルをエスケープする必要が
try '... -name $(quote" $ nombre ")...' –
ありがとう、しかしこれは動作しません。 –