Команды Linux для копирования одного файла во многие файлы
Есть ли однострочная команда / script для копирования одного файла во многие файлы в Linux?
cp file1 file2 file3
копирует первые два файла в третий. Есть ли способ скопировать первый файл в остальные?
Ответы
Ответ 1
ли
cp file1 file2 ; cp file1 file3
считать "однострочной командой / script"? Как насчет
for file in file2 file3 ; do cp file1 "$file" ; done
?
Или, для немного более слабого смысла "копирования":
tee <file1 file2 file3 >/dev/null
Ответ 2
for FILE in "file2" "file3"; do cp file1 $FILE; done
Ответ 3
Вы можете использовать shift
:
file=$1
shift
for dest in "[email protected]" ; do
cp -r $file $dest
done
Ответ 4
просто для удовольствия, если вам нужен большой список файлов:
tee <sourcefile.jpg targetfiles{01-50}.jpg >/dev/null
- Kelvin 12 февраля в 19:52
Но там немного опечатка. Должно быть:
tee <sourcefile.jpg targetfiles{01..50}.jpg >/dev/null
И как упоминалось выше, это не копирует разрешения.
Ответ 5
Самое простое/быстрое решение, о котором я могу думать, это цикл for:
for target in file2 file3 do; cp file1 "$target"; done
Грязный взломать будет следующим (я настоятельно рекомендую против этого и работает только в bash):
eval 'cp file1 '{file2,file3}';'
Ответ 6
Вместо этого вы можете использовать стандартные команды сценариев:
Bash:
for i in file2 file3 ; do cp file1 $i ; done
Ответ 7
Используйте что-то вроде следующего. Он работает на zsh.
файл cat > firstCopy > secondCopy > thirdCopy
или
cat file > {1..100} - для имен файлов с номерами.
Это хорошо для небольших файлов.
Вы должны использовать упомянутый ранее cp script для более крупных файлов.