$ sudo nano /etc/apt/sources.list
В конце каждой строки добавьте слова contrib non-free следующим образом:
deb http://ftp.uk.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.uk.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib non-free # jessie-updates, previously known as 'volatile' deb http://ftp.uk.debian.org/debian/ jessie-updates main contrib non-free deb-src http://ftp.uk.debian.org/debian/ jessie-updates main contrib non-free
Затем:
$ sudo apt-get update $ sudo apt-get install flashplugin-nonfree
Ссылка: https://www.lifewire.com/get-flash-to-work-iceweasel-debian-2202059
Я предполагаю, что у вас есть только имена файлов. Это самый простой способ сделать это, я думаю:
while IFS= read -r file; do mv -v "dirA/$file" "dirB/$file"; done < listfile.txt
Если вы предоставили основные утилиты GNU (или другие реализации с этими специфическими функциями ), вы можете использовать xargs
для создания списка аргументов для mv
на основе списка файлов:
cd A
xargs -rd '\n' -- mv -t B -- < file-list.txt
Без утилит GNU вы все равно можете использовать цикл чтения while -. В Bash это может быть:
while IFS= read -r file; do
mv "A/$file" "B/$file"
done < file-list.txt
Вы можете легко решить эту проблему в ViM с помощью этих 10 простых шагов:
qa
, чтобы начать запись макроса с именем «a». y$
, чтобы скопировать (копию )имени файла. imv A/
, чтобы написать «mv A/» перед именем файла, затем нажмите Escape
. A B/
, чтобы написать «B/» в конце строки, затем нажмите Escape
. pj^
, чтобы вставить имя файла и перейти к началу следующей строки. q
, чтобы остановить запись макроса. VG:normal @a
, чтобы воспроизвести макрос "a" до конца файла. :wq rename.sh
для сохранения в виде сценария bash с именем «rename.sh» и выхода. chmod +x rename.sh;./rename.sh
, чтобы пометить сценарий как исполняемый и запустить его. Вот вариант, совместимый с POSIX, без использования циклов. Элементы в file-list.txt
разделяются символами новой строки.
cd A ; xargs -I{} -- mv -- {} B < file-list.txt
Очевидно, что этот вариант не позволяет использовать имена файлов, содержащие символы новой строки. Кроме того, он вызывает команду mv
для каждого файла отдельно.
Вариант Дэвида Ферстера использует расширения GNU xargs
и mv
. Он будет вызывать один экземпляр mv
для нескольких аргументов и будет более эффективным для длинных списков файлов. Он по-прежнему не разрешает имена файлов, содержащие символы новой строки. Чтобы обойти это ограничение, вы можете использовать опцию -0
и разделять имена файлов символами\0
(NULL ).
cd A ; xargs -r0 -- mv -t B -- < file-list.txt
Вы можете использовать rsync
для их перемещения, предполагая, что ваш список файлов состоит из одного имени файла в строке.
rsync -av --remove-source-files --files-from filelist.txt sourceDir/ targetDir/
Если ваши файлы имеют абсолютные имена (, то есть имена начинаются с /
), sourceDir
должно быть /
. В противном случае это должен быть корень относительных имен.
Пример
$ mkdir src dst
touch src/{one,two,three}
$ cat >filelist.txt <<EOF
one
two
EOF
$ ls src
one three two
$ ls dst
$ rsync -av --files-from filelist.txt --remove-source-files src/ dst/
building file list... done
one
two
sent 165 bytes received 70 bytes 470.00 bytes/sec
total size is 0 speedup is 0.00
$ ls src
three
$ ls dst
one two