Как бы скопировать рандомные mp3-шки в папку?
chmod ugo+rwx '/home/serw/Downloads/fixedsize.py'
запустил из терминала скрипт, предварительно заменил 57-ую строку на
fixedspace.py '/home/serw/Downloads/Music' '/home/serw/mp3' '5'
Файлы не копируются, в терминале вывод такой:
Traceback (most recent call last):
File "/home/serw/Downloads/fixedsize.py", line 85, in <module>
main(sys.argv[1:])
File "/home/serw/Downloads/fixedsize.py", line 59, in main
assert len(args) == 3, main.__doc__
AssertionError:
Usage:
fixedspace.py '/home/serw/Downloads/Music' '/home/serw/mp3' '5'
Щито делать?
57 строчка это комментарий о том как использовать скрипт
#!/bin/bash
if ! [[ -d "$1" && -d "$2" && "$3" =~ ^[0-9]+$ ]]
then
echo "You are doing it wrong" >&2
exit 1
fi
find -L "$1" -name \*.mp3 -printf "%s:%p\n" | sort -R \
| awk -F: -v MS=$(($3 * 1024 * 1024)) \
'(size += $1) < MS { $1 = ""; printf "%s%c", substr($0, 2), 0; } ' \
| xargs -0 -I{FILE} cp {FILE} "$2"
Предполагается, что в именах файлов не встречается '\n'. Usage как у Федечки.
Щито делать?Для начала увидеть, что скрипт называется либо fixedspace, либо fixedsize. Уж одинаково назвать можно... И запустить его как питон, а не как шелл
З.Ы. И, да, питон нужен второй, а не третий. Под третьим не работает
rsync не знаю, поэтому с cp:Пробовал запустить - скрипт копирует один рандомный файл и обзывает его /home/serw/mp3
Была проблема одна в find — он не ходил по симлинкам. Но в остальном у меня работает отлично.
Да нет, Убунточка. Запускаю первый твой скрипт совершенно без изменений из терминала.
22:42:45 server [/tmp]
$ mkdir source dest
22:42:57 server [/tmp]
$ for i in $(seq 20); do cat /dev/urandom | head -c $(($RANDOM % 1000 * 1000)) > source/$i.mp3; done;
22:43:03 server [/tmp]
$ ls source/ -lh
total 10M
-rw-rw-r-- 1 nobody nobody 367K июля 13 22:43 10.mp3
-rw-rw-r-- 1 nobody nobody 723K июля 13 22:43 11.mp3
-rw-rw-r-- 1 nobody nobody 37K июля 13 22:43 12.mp3
-rw-rw-r-- 1 nobody nobody 623K июля 13 22:43 13.mp3
-rw-rw-r-- 1 nobody nobody 765K июля 13 22:43 14.mp3
-rw-rw-r-- 1 nobody nobody 125K июля 13 22:43 15.mp3
-rw-rw-r-- 1 nobody nobody 228K июля 13 22:43 16.mp3
-rw-rw-r-- 1 nobody nobody 323K июля 13 22:43 17.mp3
-rw-rw-r-- 1 nobody nobody 403K июля 13 22:43 18.mp3
-rw-rw-r-- 1 nobody nobody 639K июля 13 22:43 19.mp3
-rw-rw-r-- 1 nobody nobody 811K июля 13 22:43 1.mp3
-rw-rw-r-- 1 nobody nobody 429K июля 13 22:43 20.mp3
-rw-rw-r-- 1 nobody nobody 50K июля 13 22:43 2.mp3
-rw-rw-r-- 1 nobody nobody 560K июля 13 22:43 3.mp3
-rw-rw-r-- 1 nobody nobody 822K июля 13 22:43 4.mp3
-rw-rw-r-- 1 nobody nobody 697K июля 13 22:43 5.mp3
-rw-rw-r-- 1 nobody nobody 4,0K июля 13 22:43 6.mp3
-rw-rw-r-- 1 nobody nobody 911K июля 13 22:43 7.mp3
-rw-rw-r-- 1 nobody nobody 936K июля 13 22:43 8.mp3
-rw-rw-r-- 1 nobody nobody 688K июля 13 22:43 9.mp3
22:43:13 server [/tmp]
$ bash /tmp/test.sh source dest 5
22:43:20 server [/tmp]
$ ls -lh dest/
total 5,0M
-rw-rw-r-- 1 nobody nobody 367K июля 13 22:43 10.mp3
-rw-rw-r-- 1 nobody nobody 723K июля 13 22:43 11.mp3
-rw-rw-r-- 1 nobody nobody 37K июля 13 22:43 12.mp3
-rw-rw-r-- 1 nobody nobody 623K июля 13 22:43 13.mp3
-rw-rw-r-- 1 nobody nobody 125K июля 13 22:43 15.mp3
-rw-rw-r-- 1 nobody nobody 228K июля 13 22:43 16.mp3
-rw-rw-r-- 1 nobody nobody 403K июля 13 22:43 18.mp3
-rw-rw-r-- 1 nobody nobody 811K июля 13 22:43 1.mp3
-rw-rw-r-- 1 nobody nobody 429K июля 13 22:43 20.mp3
-rw-rw-r-- 1 nobody nobody 560K июля 13 22:43 3.mp3
-rw-rw-r-- 1 nobody nobody 697K июля 13 22:43 5.mp3
Сначала создай папку.
Пробовал запустить - скрипт копирует один рандомный файл и обзывает его /home/serw/mp3
mkdir /home/serw/mp3
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
и останавливается.
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 optionздесь ёбаный апостроф! но я могу проигнорировать его за
Поправил, см. первый ответ.
Я про однострочник говорил. Как смотрю, ты исправил не его. Тогда вопрос по твоему второму скрипту: как в него вставить аргументы '/home/serw/Music', '7000000000', '/home/serw/mp3'?
usage как у Федечки
script.sh /home/serw/Music /home/serw/mp3 7000
Все гениальное просто! А скрипт отлично работает, спасибо еще раз за него!
serw-System-Product-Name:~$ sh mp3.sh smb://192.168.1.2/music /home/serw/mp3 70
mp3.sh: 3: mp3.sh: [[: not found
mp3.sh: 3: mp3.sh: -d: not found
find: `smb://192.168.1.2/music': No such file or directory
С СМБ скрипт не будет работать?
Примонтируй
и запускай в bash, а не в sh
Примонтировать - это просто предварительно открыть в Наутилусе и не закрывать или именно нужно какой-то алиас указать через mount, как в теме
Вроде пишут, что Nautilus умеет монтировать smb шары. По ссылке перечислены пути монтирования в зависимости от версии Ubuntu:
Так не получилось. Курю варианты через cifs.
| xargs -0 -I{FILE} cp --parents {FILE} "$2"
Оставить комментарий
stm4836248
Для копирования всех мп3-шек можно заюзать вот такой скрипт: Как его можно изменить, чтобы он копировал не все файлы, а только рандомные, желательно с ограничением на объем копируемых файлов (не более 7 ГБ, к примеру)?