Переместить ряд нумерованных файлов?

У меня есть 291 пронумерованных файлов (начиная с 001 - название и заканчивая на 291 - название), которые нужно переместить в отдельные каталоги. (От 001 до 021 в папку 1, с 022 по 053 в папку 2, они не обязательно равны количеству файлов каждый раз).

Я подумал, что могу сделать это с таким эффектным способом: ls | head -n 21 | sed -r 's|(.*)|mv \1 /path/to/folder1|' | sh

Я почти уверен, что есть лучший способ, так что это будет?

EDIT: Так что это сработало бы хорошо, но я вспомнил ...

Я не застрял, используя терминал, поэтому я использовал диспетчер файлов, чтобы щелкнуть и перетащить. Вопрос все еще стоит.

9 голосов | спросил Rob 19 Jpm1000000pmThu, 19 Jan 2012 23:27:04 +040012 2012, 23:27:04

3 ответа


20

Поскольку вы сказали, что это не всегда ровно 21 файл, вам нужно переместить файлы вручную, и для этого вы можете использовать расширение брекета :

mv filename{001..21} dir1
mv filename{022..53} dir2
...
ответил drrlvn 20 Jam1000000amFri, 20 Jan 2012 04:28:52 +040012 2012, 04:28:52
1

Это приведет к перемещению файлов по вашему описанию (за исключением того, что второй диапазон будет от 022 до 042 для вторых 21 файла).

for ((i = 1; i <= 291; i++))
do
    ((d = (i - 1) / 21 + 1))
    printf -v file 'filename%03d' "$i"
    printf -v dir  'dirname%02d'  "$d"
    [[ -d "$d" ]] && mkdir "$d"
    mv "$f" "$d"
done
ответил Dennis Williamson 20 Jam1000000amFri, 20 Jan 2012 00:26:34 +040012 2012, 00:26:34
0

Я имею в виду переместить много файлов (например, десять тысяч или миллион), оболочка будет слишком долго жаловаться на список файлов, если вы просто используете {1..20}, поэтому

В zsh вы можете загрузить встроенный mv :

  

setopt extended_glob zmodload

     

ЗШ /файлы

после этого вы можете использовать команду:

mv ./somefolder/{1..100000}.txt  pathto/yourfolder/

, или если вы пишете сценарии оболочки, вы можете сделать что-то вроде этого:

for i in `seq $start $end`;  
    do  mv "prefix${i}suffix.txt" pathto/yourfolder/  
done

Если вы не используете zsh, вы можете обратиться к https: //unix.stackexchange.com/questions/128559/solving-mv-argument-list-too-long

ответил Arron Cao 20 J000000Monday15 2015, 18:23:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132