Ricerca nel sito web

Come utilizzare xargs con Trova in Linux


Questo tutorial spiega come utilizzare i comandi xargs e find per effettuare operazioni combinate.

Dopo aver letto questo tutorial, puoi cercare file utilizzando il comando trova ed eseguire un comando specifico in base ai risultati corrispondenti.

Le istruzioni e gli esempi sono utili per la maggior parte delle distribuzioni Linux. Il contenuto è ottimizzato sia per gli utenti Linux nuovi che per quelli esperti.

Tutti i passaggi descritti in questo articolo contengono schermate per facilitare la comprensione e l'applicazione a tutti gli utenti Linux.

Gli esempi di utilizzo inclusi in questo articolo sono i seguenti:

  • Trova ed elimina file per estensione (tipo di file).

  • Trova ed elimina i file per nome.

  • Trova e modifica le autorizzazioni dei file in base alle autorizzazioni attuali.

Breve introduzione ai comandi Trova e xargs

Il comando xargs, se combinato con altri comandi come find, utilizza l'output del primo comando come argomento.

Ad esempio, eseguiamo il comandotrova per identificare i file con un'estensione o un tipo di file specifico. Possiamo aggiungere il comando xargs per eseguire un'azione per tutti i file che corrispondono all'estensione specificata in trova.

Come puoi vedere nella riga seguente, una pipe separa COMMAND 1 e COMMAND 2, dove COMMAND 1 può essere qualsiasi comando come ls e COMMAND 2, incluso il comando xargs, seguito da un'azione specifica come gatto.

[COMMAND 1] | [COMMAND 2]

L'esempio applicabile sarebbe:

ls | xargs cat

Questo comando elencherà tutti i file all'interno della directory corrente. Quindi l'output (file elencati) verrà utilizzato da xargs come argomento e il loro contenuto verrà stampato come indicato da xargs cat. Vedi la schermata seguente:

Come trovare e spostare file utilizzando xargs

La prima sezione di questo tutorial spiega come utilizzare i comandi find e xargs per cercare e spostare file che corrispondono a una condizione, in questo caso il tipo di file.

Iniziamo trovando i file per estensione e spostandoli in una directory specifica utilizzando xargs.

Prima di iniziare, esegui il comando ls per mostrare i file e le directory all'interno della mia sottodirectory denominata testdir.

ls

Come puoi vedere, esistono diversi tipi di file, inclusi .txt, .c, e file senza estensioni. Inoltre, presta attenzione alla directorytutorialdir.

Supponiamo che tu voglia spostare i file con un'estensione specifica in una directory. La sintassi è la seguente:

find <SourceDir> -name '*.<Extension>' -type f | xargs mv -t <DestinationDir>

Nella sintassi precedente, l'opzione -name precede il nome del file o la condizione in base al nome del file. L'opzione type f specifica che il comando find si occupa di file e non di directory. L'opzione -t precedente alla directory di destinazione viene utilizzata per definire la directory di destinazione. Prestare attenzione al carattere jolly (*) precedente all'estensione, che indica al comando find di cercare tutti i file dell'estensione specificata indipendentemente dal nome.

Pertanto, se desideri spostare tutti i file .txt nella directory denominata tutorialdir, esegui il seguente comando:

find . -name '*.txt' -type f | xargs mv -t tutorialdir

Come puoi vedere, dopo aver eseguito due volte il comando ls, i file sono stati spostati dalla directory corrente alla sottodirectory tutorialdir.

La sintassi è la stessa per tutti i tipi di file. Ripetiamolo, questa volta per i file .c:

find . -name '*.c' -type f | xargs mv -t tutorialdir

Il primo comando ls mostra tre file .c nella directory corrente. Dopo aver eseguito il comando find con xargs, il comando tree mostra che tutti i file .c sono stati spostati nella directory tutorialdir, dove erano presenti i file .txt nell'esempio precedente.

Trova ed elimina file e directory per nome con xargs

La sintassi per trovare ed eliminare file utilizzando xargs è la seguente:

find <Dir> -name <File Name> | xargs rm

Qui è dove

è la directory principale in cui cerchi i file e è il nome del file che desideri trovare e rimuovere.

Vediamo lo scenario attuale nello screenshot seguente:

ls

Nel primo esempio, scegli i file per tipo, come fatto nella sezione precedente, per rimuoverli, come mostrato di seguito:

find . -name "*.c" | xargs rm

Come puoi vedere sopra, tutti i file .c sono stati eliminati con successo.

Ora, lo scenario è il seguente:

ls

Nell'esempio attuale utilizzerò il carattere jolly per rimuovere tutti i file il cui nome inizia con "file", indipendentemente dalla continuazione del nome.

find . -name "file*" | xargs rm

Fino ad ora, questo articolo spiegava come gestire i file. Ora vediamo come utilizzare find e xargs con le directory. Nel nuovo scenario, ci sono cinque nuove directory: dir1, dir2, dir3, dir4 e dir5, come mostrato nell'immagine seguente:

ls

Supponendo che tu voglia rimuovere tutte le directory con nomi che iniziano con "dir", esegui lo stesso comando. Tuttavia, dopo il comando rm, aggiungi il flag -r utilizzato per gestire le directory, come mostrato nella figura seguente:

find . -name "dir*" | xargs rm -r

Trova ed elimina file in base alle autorizzazioni

Questa sezione descrive la ricerca di file in base a autorizzazioni specifiche e la loro modifica utilizzando xargs.

Come puoi vedere di seguito, i file qualcosa1.txt, qualcosa2.txt e qualcosa3.txt hanno autorizzazioni complete per tutti (777).

ls -l

La sintassi per trovare i file in base all'autorizzazione e modificarli è mostrata di seguito:

find <SourceDir> -perm <Permissions> | xargs chmod <NewPermissions>

Per trovare tutti i file con autorizzazioni complete per tutti (777) nella directory corrente e modificarli con autorizzazioni complete per il proprietario e autorizzazioni di lettura ed esecuzione per gli utenti del gruppo e altri (755), eseguire il comando eseguito nel seguente:

find . -perm 777 | xargs chmod 755

Conclusione

Come puoi vedere, il comando xargs, se combinato con il comando trova, è utile per attività in blocco o attività specifiche quando non conosci la posizione di un file. Entrambi i comandi sono facili da implementare e possono essere incorporati dai nuovi utenti per facilitare la loro esperienza con il terminale Linux. Find e xargs sono comandi Linux di base che ogni utente Linux deve sapere come applicare. Xargs può essere combinato con altri comandi di base come ls. Le istruzioni spiegate sopra sono utili per tutte le distribuzioni Linux.

Consulta altri articoli per ulteriori suggerimenti ed esercitazioni su Linux.

Articoli correlati: