2016-07-10 3 views
0

J'essaie d'écrire un script qui va trouver l'élément le plus récemment ajouté de mon dossier de téléchargement et passer à un autre dossier. Je suis proche mais coincé sur la dernière partie. Je fais cela comme un exercice pour mieux apprendre iTerm2, pas pour des raisons pratiques. Je me rends compte qu'il existe des moyens plus simples de faire cela dans le navigateur.en essayant d'écrire un script shell pour déplacer le fichier le plus récent des téléchargements vers un autre dossier

ls -t1 /Users/name/downloads | head -n 1 | > Users/name/targetfolder 

Répondre

0

Vous trouvez correctement l'élément le plus récent avec:

ls -t1 /Users/name/downloads | head -n 1 

Cependant, vous faites erreur AFER que.

Qu'est-ce que vous pouvez faire est:

mv $(ls -t1 /Users/name/downloads | head -n 1) Users/name/targetfolder 

Au-dessus est une commande mv norme dont la syntaxe est:

mv filename target_filename # if you are renaming a file. Or, 

mv filename target_dirname # if moving the file to a different directory. 

commande Tout entre $() est remplacé par sa sortie.

Donc $(ls -t1 /Users/name/downloads | head -n 1) est remplacé par le fichier le plus récent.

Par conséquent, au fond, les moyens de commande mv most_recent_file Users/name/targetfolder

0

Si l'élément est un fichier, vous pouvez diriger votre commande head à cp:

ls -t1 /Users/name/downloads | head -n 1 | xargs cp -t Users/name/targetfolder 

Vous pouvez également ajouter un test pour vérifier si l'élément est un fichier ou un répertoire:

last=$(ls -t1 . | head -n 1) 
todir=Users/name/targetfolder 

[ -d $last ] && cp -r "$last" "$todir" || cp "$last" "$todir"