Ho un set di file in una directory. Ho bisogno di trovare i file per un insieme di date specifiche (per esempio se ho bisogno di file dal 16 gennaio al 20 gennaio). Ho provato a utilizzare ls -ltr | grep <date>
ma sono necessari troppi passaggi per eseguire la selezione dei file. C'è un modo più semplice per ottenere questo risultato. Grazie!Come usare ls per trovare i file per una serie specifica di date in Unix
risposta
Non sono sicuro di quanti file avete nel vostro directory, ma qualcosa di simile a questo dovrebbe essere veloce come il fulmine:
ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 20 {print $9}'
Sul mio sistema, vedo il seguente con date leggermente modificati :
pax> ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 29 {print $9}'
kids_shares.ods
our_savings.gnumeric
photos
pax> ls -ald kids_shares.ods our_savings.gnumeric photos
-rw-r--r-- 1 pax pax 51005 Jan 29 19:39 kids_shares.ods
-rw-r--r-- 1 pax pax 2275 Jan 28 14:48 our_savings.gnumeric
drwxrwxrwx 130 pax pax 4096 Jan 29 21:47 photos
È possibile vedere che le date corrispondono ai file specificati.
Una cosa a cui prestare attenzione: se il file è recente, avrà un tempo nella colonna 8. Oltre qualche età, ls
inizia a mettere l'anno lì. Ho il vago ricordo che è da qualche parte intorno al confine di sei mesi, ma non ne sono assolutamente certo. Avrai bisogno di provvedere anche a quello.
ha funzionato alla grande ... – Shash
Utilizzare invece find(1)
, sarà molto più semplice.
find . -mtime -$start -mtime +$end
'find' ha un flag' -newer' (per vedere se è più recente di un altro file) ma sfortunatamente non uno '-older'. Non sono sicuro che sia adatto a questi intervalli di date molto specifici. – paxdiablo
@paxdiablo è adatto, ho appena aggiunto un esempio (anche, find ha l'operatore '!' (Not)) – wich
Ooh, non ci avevo pensato. Buona chiamata – paxdiablo
È meglio usare find
. Inizia creando due file temporanei con orari specifici da cercare tra. touch
può fare questo:
touch -t "201301160001" ./start
touch -t "201301202359" ./finish
Poi gestita find
:
find /path/to/files -type f -newer ./start ! -newer ./finish
In realtà, entrambe queste soluzioni basate sulla ricerca sono probabilmente migliori delle mie - potrebbe essere necessario utilizzare maxdepth se non si desidera entrare nelle sottodirectory. +1 per entrambi. – paxdiablo
@paxdiablo: Grazie amico. Ho ricambiato perché (anche se preferisco non analizzare l'output di 'ls') l'OP _did_ vuole farlo in quel modo, e' awk' è stata una buona scelta. – Steve
Questo funziona perfettamente per me in modo interattivo, ma non restituisce alcun risultato se usato in uno script (con './Script.sh',' bash script.sh' o 'source script.sh'). Penso che abbia a che fare con il botto; quando uso 'bash -x' a debug, è circondato da virgolette singole; eseguire il comando in questo modo non restituisce nulla. – rensa
- 1. pipe Unix in ls
- 2. UNIX 'ls' di comando - jolly 'O' operatore
- 3. Come usare i panda per trovare stessi dati consecutivi in serie temporali
- 4. Come eliminare una riga specifica da un file in unix?
- 5. UNIX: Come usare trovare comando per trovare il percorso completo se dato percorso parziale
- 6. Trovare file eseguibili usando ls e grep
- 7. Ottieni tutti i file da VSS per una data specifica?
- 8. Come posso usare php per analizzare una stringa di date?
- 9. più vicino record per una serie di date
- 10. Impossibile trovare una specifica per `Firebase`
- 11. Globbing con ls per trovare tutti i file che corrispondono a un determinato pattern
- 12. Usare ISNULL e usare COALESCE per verificare una condizione specifica?
- 13. Trova la prima di una serie di date JavaScript
- 14. Trovare file leggibili su Unix
- 15. come trovare il codice chiave per una chiave specifica
- 16. Trovare tutti i file con determinate estensioni in Unix?
- 17. jq date e unix timestamp
- 18. Rimuovere solo i miei file in Unix
- 19. UNIX comando 'ls' esclude carattere jolly
- 20. Per trovare tutti i intervalli di date sovrapposte da un determinato elenco di intervalli di date
- 21. Come fare per creare file oggetto in una directory specifica
- 22. Trova Unix con GNU Make per aggiornare automaticamente i file
- 23. Servlet per scaricare i file da una cartella specifica?
- 24. Dove posso trovare una serie specifica di regole di confronto per il confronto delle uguaglianze delle stringhe?
- 25. per nome in `ls` e nomi di file con spazi
- 26. Come inserisco una riga in una riga specifica in più file su Unix?
- 27. Comando terminale per trovare le linee contenenti una parola specifica?
- 28. Come trovare il fuso orario di data/ora specifica in una posizione specifica?
- 29. Come eseguire la ricerca in g ++ per i file di intestazione in una directory specifica?
- 30. Come trovare linee duplicate su 2 file diversi? Unix
Shash, hanno un pensare la risposta accettata, penso ritrovamento possa essere uno strumento migliore per il lavoro. – paxdiablo
@paxdiablo Ok, proverò anche a quello – Shash