2016-12-12 3 views
0
  1. erstellen 50 Dateien, deren Namen 1-50 zu kopieren.
  2. Erstellen fünf Ordner (0, 10, 20, 30, 40).
  3. Kopieren Sie diese 50 Dateien in Ordner, die auf ihrem Namen basieren (z. B. wird die Datei 21 in den Ordner 20 verschoben).

Ich habe diese Dateien und Ordner erstellt, haben aber keine Ahnung, wie eine bestimmte Datei zu bestimmten Ordner zu verschieben. Ich habe versucht zu schreibenWie bestimmte Dateien in bestimmte Ordner linux bash

cp {1..9} /home/user/folder 

aber das ist nicht akzeptabel. Ist es möglich, if und elif zu verwenden?

+0

ich einen einfachen 'for' Schleife itc verwenden würde - aber Sie können, ohne tun Natürlich, aber keine Notwendigkeit für "if" und "elif", wie ich es sehe – msrd0

+0

und in welchem ​​Ordner sollte die Datei 50 gehen? in 40? – msrd0

+0

for i in {1..50} tun, wenn [i -lt10] dann cp $ i.txt 0 es möglich, wie ist das? –

Antwort

0
cp {1..9} /home/user/folder 

Das wird funktionieren, außer Sie sollten den richtigen Ordner zum Kopieren angeben. Vielleicht hast du eine davon gemeint?

cp {1..9} /home/user/folder/0 
cp {1..9} 0 

Eine andere Möglichkeit ist die Verwendung von Platzhaltern. * entspricht einer beliebigen Zeichenfolge und ? entspricht einem beliebigen Zeichen. 2? wird die Dateinamen 20 bis 29 zum Beispiel übereinstimmen.

+0

so? : cp {2?} ich bin nur ein Anfänger ... :( –

+0

Keine geschweiften Klammern. –

0

Wenn Sie nichts dagegen haben eine for Schleife statt if verwenden und else Sie folgenden Code verwenden könnten:

#1 
touch file{1..50} 
#2 
mkdir dir{0..40..10} 
#3 
for i in {1..4}; do 
    cp file${i}* dir${i} 
done 
cp file* dir0 # note that this will copy file50 into dir0 
Verwandte Themen