我正在尝试设置一个脚本,根据.torrent
的输出自动删除transmission-remote
文件。
transmission-remote http://localhost/transmission -l | grep 100% | grep Finished | awk '{print $10}' | xargs -I% -r -p -n 1 /bin/rm /mnt/samba/Dropbox/%.torrent
这是我目前的输出:
/bin/rm /mnt/samba/Dropbox/MyTorrent.torrent ?...y
/bin/rm: cannot remove `/mnt/samba/Dropbox/MyTorrent.torrent': No such file or directory
输出的名称与.torrent名称相同
root@mfalc:/mnt/samba/Dropbox/# ls
MyTorrent.torrent
root@mfalc:/mnt/samba/Dropbox/#
以下是awk
root@mfalc:~# transmission-remote http://localhost/transmission -l | grep 100% | grep Finished | grep Done
12 100% 174.4 MiB Done 0.0 0.0 0.01 Finished MyTorrent
我掩盖了实际的洪流名称,但有没有人有任何建议?我是否正确地将.torrent
扩展名与xargs
连接起来了?
答案 0 :(得分:3)
那么你不需要xargs
,awk
可以为你做(只有那部分):
awk '{print $10 ".torrent"}'
更好的awk
可以在其上调用rm
:
awk '{system("rm -i " $10 ".torrent")}'
如果您在torrent名称中有空格:
awk '{system("rm -i " gensub(" ","\\\\ ","g",$10) ".torrent")}'
答案 1 :(得分:0)
Perl可以在不需要grep
,awk
或xargs
的情况下执行此操作。
perl -lane 'if (/100%.*Finished/) { unlink "$F[9].torrent" or warn $! }'
-n
选项将处理所有传入的行,充当xargs
,if
语句将充当您的grep
,unlink
充当rm
1}}。 warn
不是绝对必要的,但是知道脚本是否无法删除文件可能会很好。
所以你会这样称呼它:
transmission-remote http://localhost/transmission -l | perl -lane 'if (/100%.*Finished/) { unlink "$F[9].torrent" or warn $! }'