1 (08.09.2012 17:12:47 отредактировано D_Chu)

Имеется торрент-клиент Flush
Все активные torrent-файлы хранятся в отдельных папках и имеют при этом одинаковое имя ~/.flush/torrents/очень_длинное_имя_папки/torrent.torrent
Подскажите, пожалуйста, как все эти файлы скопировать в отдельное место в виде очень_длинное_имя_папки.torrent или просто случайное_число.torrent
Главное, чтобы все torrent-файлы были в одной папке и с разными именами.

2

cd ~/.flush/torrents/ && find ./ -iname '*.torrent' -type f  | sed -r 's!^.*/?(.+)/.+\.torrent$!mv "\&" "/dest/folder/\1.torrent"!'
если всё понравилось, то в конец sed-скрипта допиши e.
[не тестил]

95% процентов проблем находятся между клавиатурой и стулом.

3

Fat-Zer, не работает ac

4

alexander@goblin /tmp $ mkdir test
alexander@goblin /tmp $ cd test
alexander@goblin /tmp/test $ mkdir {1..8}
alexander@goblin /tmp/test $ touch {1..8}/torrent.torrent
alexander@goblin /tmp/test $ mkdir ../dest
alexander@goblin /tmp/test $ tree
.
├── 1
│   └── torrent.torrent
├── 2
│   └── torrent.torrent
├── 3
│   └── torrent.torrent
├── 4
│   └── torrent.torrent
├── 5
│   └── torrent.torrent
├── 6
│   └── torrent.torrent
├── 7
│   └── torrent.torrent
└── 8
    └── torrent.torrent

8 directories, 8 files
alexander@goblin /tmp/test $ find ./ -iname '*.torrent' -type f  | sed -r 's!^.*/?(.+)/.+\.torrent$!mv "&" "/tmp/dest/\1.torrent"!'
mv "./8/torrent.torrent" "/tmp/dest/8.torrent"
mv "./7/torrent.torrent" "/tmp/dest/7.torrent"
mv "./6/torrent.torrent" "/tmp/dest/6.torrent"
mv "./5/torrent.torrent" "/tmp/dest/5.torrent"
mv "./4/torrent.torrent" "/tmp/dest/4.torrent"
mv "./3/torrent.torrent" "/tmp/dest/3.torrent"
mv "./2/torrent.torrent" "/tmp/dest/2.torrent"
mv "./1/torrent.torrent" "/tmp/dest/1.torrent"
alexander@goblin /tmp/test $ find ./ -iname '*.torrent' -type f  | sed -r 's!^.*/?(.+)/.+\.torrent$!mv "&" "/tmp/dest/\1.torrent"!e'








alexander@goblin /tmp/test $ ls -al ../dest
итого 0
drwxr-xr-x  2 alexander users  200 сент.  6 14:50 .
drwxrwxrwt 27 root      root  2540 сент.  6 14:49 ..
-rw-r--r--  1 alexander users    0 сент.  6 14:49 1.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 2.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 3.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 4.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 5.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 6.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 7.torrent
-rw-r--r--  1 alexander users    0 сент.  6 14:49 8.torrent

один слеш лишний был...

лучше даже вот так будет:
find ./ -iname 'torrent.torrent' -type f  | sed -r 's!^\./(.+)/torrent\.torrent$!cp "&" "/tmp/dest/\1.torrent"!'

95% процентов проблем находятся между клавиатурой и стулом.

5

Fat-Zer, вот этот вариант работает

find ./ -iname '*.torrent' -type f  | sed -r 's!^.*/?(.+)/.+\.torrent$!mv "&" "/tmp/dest/\1.torrent"!e'

но имена полученных файлов это одна цифра или буква с расширением .torrent
Этот вариант

find ./ -iname 'torrent.torrent' -type f  | sed -r 's!^\./(.+)/torrent\.torrent$!cp "&" "/tmp/dest/\1.torrent"!'

дает вывод такого вида

cp "./.flush/torrents/cbca8520698d18eed6c9c1857e69875fe4495d81/torrent.torrent" "/data/torrents/.flush/torrents/cbca8520698d18eed6c9c1857e69875fe4495d81.torrent"

но файлов в конечной папке нет. Права на папку в порядке.

6 (07.09.2012 09:20:30 отредактировано Fat-Zer)

D_Chu пишет:

но имена полученных файлов это одна цифра или буква с расширением .torrent

ну да... моя ошибка... я там намудрил всякой лабуды...

D_Chu пишет:

но файлов в конечной папке нет. Права на папку в порядке.

Fat-Zer пишет:

если всё понравилось, то в конец sed-скрипта допиши e.

95% процентов проблем находятся между клавиатурой и стулом.

7

Fat-Zer пишет:

лучше даже вот так будет:
find ./ -iname 'torrent.torrent' -type f  | sed -r 's!^\./(.+)/torrent\.torrent$!cp "&" "/tmp/dest/\1.torrent"!'

Fat-Zer пишет:

если всё понравилось, то в конец sed-скрипта допиши e.

Спасибо, этот вариант работает (с "e" в конце)
Единственное, что пришлось руками создавать папку .flush/torrents/ в папке назначения (пока не создал папку, писало что "cp: невозможно создать обычный файл")