2016-08-12 4 views
0

Ich habe einen Ordner voller Dateien um 7000 und ich muss nach den ersten x-Dateien in einen anderen Ordner kopieren oder verschieben.Kopieren Sie die X-Dateien von einem Ordner in einen anderen

mein aktuelles einfaches Skript ist:

for file in $(ls -p | grep -v/| tail -100) 
    do 
    echo $file 
    cp $file "/other /Folder" 

done 

aber es funktioniert nicht, wenn es Platz im Dateinamen ist. Befehl grep nimmt nur den ersten Teil des Namens. Ich bin offen für jeden Vorschlag und lerne, wie es geht?

+2

Sie benötigen $ Datei zu zitieren, z.B. "$ file" – user3439894

+0

Ich stimme mit @ user3439894 überein. Leerzeichen oder Sonderzeichen funktionieren nicht mit Ihrem Skript. Als allgemeine Regel, parse nicht die Ausgabe von ls. Parameter- und Befehlsersetzungen sollten doppelt zitiert werden. – 0x23212f

Antwort

2

Sie können auch eine einfache for Schleife und eine count verwenden, um die erste count Anzahl der Dateien zu überspringen und den Rest zu verschieben, z. das Überspringen der ersten 3 Dateien (oder Ordner):

$ skip=3; for i in *; do ((skip > 0)) && { ((skip--)); continue; }; mv "$i" "$destdir"; done 

oder in Skriptform:

skip=3 
for i in *; do 
    ((skip > 0)) && { ((skip--)); continue; } 
    mv "$i" "$destdir" 
done 
+0

merkwürdiger Sprungwert ändert sich dort nicht .... – marciton

+0

Hmm. das ist seltsam, welche OS/Shell laufen Sie? Es sollte keine Rolle spielen, da die arithmetische Behandlung und der Vergleich von POSIX verwendet werden. Du kannst versuchen '[" $ skip "-gt '0'] && {skip = $ (Ausdruck" $ skip "- 1); fortsetzen; } 'wenn Ihre Plattform Schwierigkeiten mit der POSIX' ((...)) '-Notation hat. (Stellen Sie sicher, dass * Leerzeichen in 'expr" $ skip "- 1 'sind, wenn Sie diese Route gehen) Sie können auch * hinting * an die Shell versuchen, die' skip' eine' ganze Zahl 'mit 'declare -i skip' ist um zu beginnen, oder probiere 'skip = $ ((skip-1))' 'anstelle von' ((überspringen -)) ' –

+0

Es funktioniert gut in OS X El Capitan 10.11.5:' BASH_VERSION = '3.2.57 (1) -release'' – user3439894

Verwandte Themen