Bash Script - kopieer de nieuwste versie van een bestand recursief in een map

Hieronder probeer ik de nieuwste versie van een bestand te vinden dat zich in meerdere mappen zou kunnen bevinden.

Voorbeelddirectory:

~inventory/emails/2012/06/InventoryFeed-Activev2.csv    2012/06/05
~inventory/emails/2012/06/InventoryFeed-Activev1.csv    2012/06/03
~inventory/emails/2012/06/InventoryFeed-Activev.csv     2012/06/01

Hier is het bash-script:

#!/bin/bash

FILE = $(find ~/inventory/emails/ -name INVENTORYFEED-Active\*.csv | sort -n | tail -1)
#echo $FILE #For Testing

cp $FILE ~/inventory/Feed-active.csv;

De fout die ik krijg is:

./inventory.sh: line 5: FILE: command not found

Het script zou het nieuwste bestand moeten kopiƫren zoals hierboven is geprobeerd.

Twee vragen:

Ten eerste, is dit de beste methode om te bereiken wat ik wil? Ten tweede, wat is er mis hierboven?

1
toegevoegd de auteur Dennis Williamson, de bron
Zie bovenstaande link alstublieft. Alle antwoorden op deze pagina hebben nog steeds problemen, bijvoorbeeld bestandsnamen met nieuwe regels. Zoeken sorteert niet op mtijd voor jou, dus wat je nu hebt, doet niets nuttigs.
toegevoegd de auteur ormaaj, de bron

2 antwoord

Het ziet er goed uit, maar je hebt spaties rond het teken = . Dit zal niet werken. Proberen:

#!/bin/bash

FILE=$(find ~/inventory/emails/ -name INVENTORYFEED-Active\*.csv | sort -n | tail -1)
#echo $FILE #For Testing

cp $FILE ~/inventory/Feed-active.csv;
6
toegevoegd

... Wat is hierboven verkeerd?

Variabele toewijzing. Het is niet de bedoeling dat u extra spaties rond het = -teken plaatst. Het volgende zou moeten werken:

FILE=$(find ~/inventory/emails/ -name INVENTORYFEED-Active\*.csv | sort -n | tail -1)

... is dit de beste methode om te bereiken wat ik wil?

Waarschijnlijk niet. Maar de beste manier hangt van veel factoren af. Misschien kan degene die deze bestanden schrijft ze op de juiste plaats neerzetten. Je kunt ook de modificatietijd van bestanden controleren, maar dat kan ook mislukken ... Dus zolang het voor jou werkt, zou ik zeggen ervoor gaan :)

1
toegevoegd