2016-12-12 3 views
0
  1. Создание 50 файлов, чьи имена из 1 в 50.
  2. Создать пять папок (0, 10, 20, 30, 40).
  3. Скопируйте эти 50 файлов в папки на основе их имени (например, файл 21 перейдет в папку 20).

Я создал эти файлы и папки, но не имею ни малейшего представления о том, как переместить конкретный файл в определенную папку. Я пробовал написатьКак скопировать определенные файлы в определенную папку Linux Баш

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

но это неприемлемо. Можно ли использовать if и elif?

+0

Я хотел бы использовать простой 'for' КВТ цикла - но вы можете обойтись без из конечно, но не нужно для 'if' и' elif', как я вижу это – msrd0

+0

и в какой папке должен идти файл 50? в 40? – msrd0

+0

для г в {1..50} сделать если [-lt10] затем ф $ i.txt 0 Можно ли так? –

ответ

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

Это будет работать, за исключением того, что вы должны указать правильную папку для копирования. Возможно, вы имели в виду один из них?

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

Другой способ - использовать подстановочные знаки. * соответствует любой строке и ? соответствует любому символу. 2? будет соответствовать именам файлов 20 через 29, например.

+0

вот так? : cp {2?} im only begineer ... :( –

+0

Нет фигурных скобок. –

0

Если вы не возражаете, используя for петлю вместо if и else вы могли бы использовать такой код:

#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 
Смежные вопросы