Come faccio a utilizzare l'operatore {} nell'esecuzione di esecuzione all'interno di exec

Ho provato questo command bash:

find /var/www/ -path '*wp-admin/index.php' -exec mv {} $(dirname {})/index_disabled 

Ma il secondo {} non viene eseguito.

  • Come determinare quante conchiglie profonde potresti essere?
  • Manipolare JSON in bash
  • Connettiti alla row di command MySQL senza bisogno di password di root
  • `ssh foo" <command /> "` non caricare gli alias remoti?
  • Equivalente SSH di .profile / .bashrc
  • Come leggere in caratteri N casuali da / dev / urandom?
  • Ne risulta invece solo ./index_disabled .

    Come posso utilizzare due volte il parametro trovato nel command di esecuzione?

    3 Solutions collect form web for “Come faccio a utilizzare l'operatore {} nell'esecuzione di esecuzione all'interno di exec”

    Potresti usare un semplice ciclo per risolvere questo problema.

     for f in $(find /var/www/ -path '*wp-admin/index.php'); do mv $f $(dirname $f)/index_disabled; done 

    Il tuo problema non è che non sia interpretato due volte, come fare

     find . -type f -exec echo {} {} \; 

    mostrerò. Il problema è che {} non può essere utilizzato come argomento a una function, come stai cercando. Nella mia esperienza (limitata), se vuoi diventare intelligente con la find e il contenuto di {} , devi scrivere uno script di shell che viene invocato da find , che prende {} come suo unico argomento e che fa le cose intelligenti all'interno di questo script.

    Ecco un esempio di script intelligente:

     [me@risby tmp]$ cat /tmp/clever.sh #!/bin/bash echo $1 $(dirname $1)/index_disabled 

    Ecco io che lo uso con la ricerca e le ultime righe dei risultati:

     [me@risby tmp]$ find . -type f -exec /tmp/clever.sh {} \; [...] ./YubiPAM-1.1-beta1/stamp-h1 ./YubiPAM-1.1-beta1/index_disabled ./YubiPAM-1.1-beta1/depcomp ./YubiPAM-1.1-beta1/index_disabled ./YubiPAM-1.1-beta1/INSTALL ./YubiPAM-1.1-beta1/index_disabled 

    Come potete vedere, se ho sostituito l' echo nel shellscript con mv , avrei ottenuto il risultato desiderato.

    Devi usare il command xargs e un piccolo trucco:

     $ find /var/www/ -path '*wp-admin/index.php' | xargs -i sh -c 'mv {} $(dirname {})/index_disabled' 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.