2016-07-10 21 views
0

Ich versuche ein Skript zu schreiben, das das zuletzt hinzugefügte Element aus meinem Downloads-Ordner findet und in einen anderen Ordner verschiebt. Ich bin nah dran, aber fest am letzten Teil. Ich mache das als Übung, um iTerm2 besser zu lernen, nicht aus praktischen Gründen. Ich weiß, es gibt einfachere Möglichkeiten, dies im Browser zu tun.versuchen, ein Shell-Skript zu schreiben, um die neueste Datei von Downloads in einen anderen Ordner zu verschieben

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

Antwort

0

Sie finden korrekt die aktuellste Artikel mit:

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

immer Sie Fehler afer dass machen werden.

Was können Sie tun, ist:

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

Oben ist ein Standard mv Befehl, dessen Syntax:

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

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

Anything Befehl zwischen $() durch seine Ausgabe ersetzt wird.

So $(ls -t1 /Users/name/downloads | head -n 1) wird durch die neueste Datei ersetzt.

daher grundsätzlich der Befehl bedeutet mv most_recent_file Users/name/targetfolder

0

Wenn das Element eine Datei ist, können Sie Rohr Ihre head Befehl cp:

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

Sie auch einen Test, ob das Element überprüfen eintragen ist eine Datei oder ein Verzeichnis:

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

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