From: ng0 <ng0@libertad.pw>
To: John Darrington <john@darrington.wattle.id.au>
Cc: guile-user@gnu.org
Subject: Re: How to pass something on to xargs rm?
Date: Tue, 27 Dec 2016 12:42:13 +0000 [thread overview]
Message-ID: <871swta6hm.fsf@wasp.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <20161227120750.GA16030@jocasta.intra>
John Darrington <john@darrington.wattle.id.au> writes:
> On Tue, Dec 27, 2016 at 11:33:21AM +0000, ng0 wrote:
> Hi,
>
> I have some scripts and small applications I'm slowly moving over
> to guile.
> One of them features this[0] line at the end which passes results on
> to xargs rm. I picked a start with just (system*) everything I
> had before to learn about the behavior and outcome, and improve
> from this point.
> I know that "|" will not work, so what else could possibly work
> (for starters, in the long run I'll generalize and extend what I
> currently have) to execute this command which deletes every file
> listed in the previous search?
>
> [0]: notmuch search --output=files tag:deleted | xargs -L 1 rm
>
>
> I think you want something like: .... | xargs -I {} rm {}
>
>
> J'
I think I was a bit too verbose with my question. I meant to say:
the part behind the "|", which originates from a 1:1 conversion of
the bash based part, is ignored for obvious reasons. But what
would be a quick way (until I've learned enough on this topic
myself) to perform the deletion?
I know that the original, "notmuch search --output=files
tag:deleted | xargs -L 1 rm" works in the bash script, but for
the .scm script, everything above (fetching mail, tagging mail)
works and this part is ignored:
(system* "notmuch" "search" "--output=files" "tag:deleted" "|" "xargs" "-L" "1" "rm")
To give you an idea, this is (part of) the mailget.scm:
ng0@wasp ~$ cat mailget
#!/home/ng0/.guix-profile/bin/guile \
-s
!#
(let* ((home (getenv "HOME"))
;;(tor-on (system* "." "torsocks" "on"))
;;(tor-off (system* "." "torsocks" "off"))
(nm-new (system* "notmuch" "new")))
(chdir (string-append home "/.getmail"))
;; tor-on
;;# find . -name '*.rc' | xargs -n1 -i basename {} .rc | xargs -P 2 -n1 -i getmail -r {}.rc
;; FIXME: *.rc not found here:
;; (system* "parallel" "getmail" "-q" "-r" "{}" ":::" "*.rc")
(system* "getmail" "-r" "getmailrc_grrlz_2.rc")
(system* "getmail" "-r" "getmailrc_runbox.rc")
;;tor-off
nm-new
(system* "notmuch" "tag" "-inbox" "+sometag" "--" "some subject")
…
;; Of course I don't have literally somesubject sometag, I
just will not expose what I tag and sort.
…
(system* "notmuch" "search" "--output=files" "tag:deleted" "|" "xargs" "-L" "1" "rm")
(display "done")
(newline))
If there is no obvious, quick solution based on what I currently
do, I will gladly accept any small pointers to subjects I could
read into and solve it later in a better version. I consider the
current script just a small hack.
One solution I can imagine is that I write some functions which
will allow me to save the output of such a search into a list I
can work with and execute the physical deletion on each element.
> --
> Avoid eavesdropping. Send strong encrypted email.
> PGP Public key ID: 1024D/2DE827B3
> fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3
> See http://sks-keyservers.net or any PGP keyserver for public key.
>
--
♥Ⓐ ng0
PGP keys and more: https://n0is.noblogs.org/ http://ng0.chaosnet.org
next prev parent reply other threads:[~2016-12-27 12:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-27 11:33 How to pass something on to xargs rm? ng0
2016-12-27 12:07 ` John Darrington
2016-12-27 12:42 ` ng0 [this message]
2016-12-27 13:04 ` Eli Zaretskii
2017-05-29 9:36 ` Thien-Thi Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871swta6hm.fsf@wasp.i-did-not-set--mail-host-address--so-tickle-me \
--to=ng0@libertad.pw \
--cc=guile-user@gnu.org \
--cc=john@darrington.wattle.id.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).