[Risolto] Sposta i file in base alla ricerca di locate

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
ant1988
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1126
Iscrizione: venerdì 14 novembre 2008, 18:57
Località: Vicino Firenze

[Risolto] Sposta i file in base alla ricerca di locate

Messaggio da ant1988 »

Salve a tutti ho una richiesta da farvi vorrei fare un programmino in bash in modo tale che con il risultato del comando locate

Codice: Seleziona tutto

locate /home/antonio/prova *.txt
venga trasferito nella cartella prova2.
Ne ho provate di tutte ma il risultato non cambia: mi da sempre errore:

Codice: Seleziona tutto

antonio@antonio-All-Series:~/prova$ mv 'locate /home/antonio/prova *.txt' /home/antonio/prova2                                                                          
mv: impossibile eseguire stat di 'locate /home/antonio/prova *.txt': File o directory non esistente                                                                                           
antonio@antonio-All-Series:~/prova$ 
Praticamente volevo prelevare tutti i file di testo nella cartella prova tramite locate e spostarli nella cartella prova2... ma non so come fare help me please!!
Ultima modifica di ant1988 il sabato 4 febbraio 2017, 11:42, modificato 3 volte in totale.
Non sono massone ma sono dell'idea che:Giustizia,fratellanza e uguaglianza siano  concetti abbastanza belli :)
Avatar utente
ant1988
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1126
Iscrizione: venerdì 14 novembre 2008, 18:57
Località: Vicino Firenze

Re: Sposta i file in base alla ricerca di locate

Messaggio da ant1988 »

Mi rispondo da solo :p
lo script é il seguente:

Codice: Seleziona tutto

#! /bin/sh
cd /home/antonio/prova
#variabile= locate fileditesto.txt
variabile2=$(find *.txt)
mv $variabile2 /home/antonio/prova2/
Non sono massone ma sono dell'idea che:Giustizia,fratellanza e uguaglianza siano  concetti abbastanza belli :)
Avatar utente
ant1988
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1126
Iscrizione: venerdì 14 novembre 2008, 18:57
Località: Vicino Firenze

Re: Sposta i file in base alla ricerca di locate

Messaggio da ant1988 »

Ahimé ancora non ho risolto:
se ho due file simili il comando mv non me li fa spostare perché nel mezzo mi mette

Codice: Seleziona tutto

\n
e mv siccome é preciso..ovviamente mi dice che quel file\n non esiste e quindi non si può spostare..cosa devo fare?
dove ho sbagliato?
Aitutatemi please!!

Codice: Seleziona tutto

variabile=$(find Renegade\ -\ 3x.avi | tr '\n' ' ')
poi però quando vado a fare

Codice: Seleziona tutto

 mv "$variabile" /pincopallo
Mi dice che il file "tuttoinsieme" non lo trova ovviamente... qualche idea su come modificare variabile in modo tale che sia diviso fra loro due?
Non sono massone ma sono dell'idea che:Giustizia,fratellanza e uguaglianza siano  concetti abbastanza belli :)
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12943
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: Sposta i file in base alla ricerca di locate

Messaggio da thece »

:ciao:

questo comando

Codice: Seleziona tutto

sudo find / -name "Document*.pdf" -exec echo '{}' \;
e questo script

Codice: Seleziona tutto

#!/bin/bash

declare -a FILE_LIST=()   

FILE_LIST=$(sudo find / -name "Document*.pdf")

for FILE in "${FILE_LIST[@]}"; do

        echo "$FILE"
done

exit 0
fanno la stessa cosa: cercano ed elencano in tutto il file system i file di nome Document*.pdf.

Il problema non sono gli "\n". In uno spostamento di file il problema è il pathname di destinazione. Occhio al sudo
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Sposta i file in base alla ricerca di locate

Messaggio da crap0101 »

una cosa tipo

Codice: Seleziona tutto

find ..... -print0 | xargs -0 mv -t DESTDIR
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
ant1988
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1126
Iscrizione: venerdì 14 novembre 2008, 18:57
Località: Vicino Firenze

Re: Sposta i file in base alla ricerca di locate

Messaggio da ant1988 »

Ok grazie a tutti e due :) è bello sapere che si possa contare su una comunità così vasta vi ringrazio e vi farò sapere quale delle due uso
Non sono massone ma sono dell'idea che:Giustizia,fratellanza e uguaglianza siano  concetti abbastanza belli :)
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Sposta i file in base alla ricerca di locate

Messaggio da UbuNuovo »

@ant1988: find è più sicuro e più potente di locate, adattando il codice di Crap per locate diventa:

Codice: Seleziona tutto

locate -0 /path/*.ext | xargs -0 mv -t DESTDIR
Per ricerche su molte directory, locate è più veloce di find ma tieni in conto che il suo database non si aggiorna automaticamente dopo la cancellazione/spostamento di file.
Per aggiornarlo devi usare

Codice: Seleziona tutto

sudo updatedb
Salva l'Ucraina! 🇺🇦
Avatar utente
ant1988
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1126
Iscrizione: venerdì 14 novembre 2008, 18:57
Località: Vicino Firenze

Re: Sposta i file in base alla ricerca di locate

Messaggio da ant1988 »

Ok il codice di Crap funziona alla grande e metto risolto comunque mi piacerebbe sapere cosa fa questa stringa:

Codice: Seleziona tutto

 -print0 | xargs -0 
Grazie a tutti per la collaborazione :)
ps alla fine ho usato find
Non sono massone ma sono dell'idea che:Giustizia,fratellanza e uguaglianza siano  concetti abbastanza belli :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 14 ospiti