J'ai un grand nombre de photos d'un vieux disque dur que j'essaie d'organiser. Si je lance ls -l
, je remarque que tous ces fichiers ont une date de création de 2012 ou avant. Idéalement, j'aimerais les déplacer vers le deuxième disque dur de mon ordinateur, qui n'est pas configuré pour se monter automatiquement. De préférence, je pourrais tout faire en lot avec certaines commandes liées entre elles. Jusqu'à présent, j'ai ls -l | grep -i 2012
qui crache uniquement les fichiers avec 2012 à la date fournie par ls -l
. Maintenant, l'astuce serait cp
de placer tous ces fichiers dans le nouveau répertoire. Je ne sais pas où aller ensuite avec cela car chaque fichier devrait être copié. Quelle serait ma prochaine série de commandes?
la source
Si vous avez des fichiers plus récents sur l'ancien disque que vous voulez ignorer, je procéderais comme ceci
Voici des exemples de commandes pour cela, qui supposent que vous souhaitez conserver toute hiérarchie de répertoires de l'ancien disque dans le nouveau (
cpio
est une commande de copie, similaire àtar
oupax
):la source
Je pense que ce problème est peut-être le même que le vôtre, vous pouvez également le vérifier: créer des sous-répertoires et organiser les fichiers par date
J'écris ce nouveau script basé sur la première réponse de ce problème:
écrire ce script dans un fichier nommé
copy.sh
dans votre ancien répertoire.remplacez le
/your/new/directory
par le chemin de votre nouveau répertoirerendre ce fichier exécutable avec
chmod +x copy.sh
puis exécutez ce fichier en
./copy.sh
la source
2015
répertoire.Vous devriez probablement utiliser un outil de traitement par lots pour les opérations par lots. Cela implique généralement de lire / écrire tous les enregistrements dans un seul flux plutôt que, par exemple, d'invoquer un
cp
processus distinct pour chaque fichier copié.Il y a déjà une
cpio
réponse écrite ici, qui, étant donné uniquement les options déjà fournies, est probablement ce que je choisirais. Cependant, lecpio
format a été amélioré et replié dans lepax
format d'archivage standardisé depuis son apogée. Il en va de mêmetar
.Un POSIX strict
pax
ne fournira probablement aucune option pour filtrer directement les membres de l'archive en fonction des temps de modification des fichiers - bien que la norme spécifie le%T
modificateur de format en mode liste. Pourtant, l'pax
implémentation la plus couramment disponible que je connaisse - qui est la version BSD maintenue par mirabilos - l'étend à un commutateur CLI directement accessible.Par exemple, pour copier uniquement tous les fichiers de l'arborescence dont la racine a
./
été modifiéeccyymmddHHMM
pour la dernière fois,/target/dir
vous pouvez faire:Pour éviter de revenir dans les répertoires enfants, vous pouvez faire à la place:
Voir la
man
page pour en savoir plus.la source
pax
, maistar
etcpio
encore me suis bien. +1pax
format d'archive réel (qui est une extension du format ustar ) , l'pax
utilitaire spécifié POSIX lit / écrit les formats cpio, pax et ustar. Étant donné que les trois types d'archives correspondent principalement à des moyens différents de coder les métadonnées de nombreux fichiers aux côtés des données réelles desdits fichiers dans un seul flux, ce n'est pas vraiment trop étiré. J'ai écrit une foisshitar
- qui n'était que quelques lignes de shell-script pour - principalementdd
- des développeurs detar
blocs à la volée basés sur la spécification POSIX.cpio -H ustar
...