Так как cp
всегда принимает только одно имя назначения, вам придется создать цикл и вызвать копирование файлов по отдельности:
for destdir in /home/*/Desktop/; do
cp myfile "$destdir"
done
Использование xargs
здесь, как вы предлагаете, вероятно, сработает,но было бы громоздко:
printf '%s\n' /home/*/Desktop/ | xargs -I {} cp myfile {}
Это зависит от имен подкаталогов в /home
без символов новой строки в них (но я не знаю ни одной Unix, которая допускает символы новой строки в именах пользователей ).
Возможно, вы также захотите изменить владельца файла на владельца соответствующего Desktop
каталога.
Вы можете сделать это удобно с помощью GNUchown
(из coreutils )вот так:
for destdir in /home/*/Desktop/; do
cp myfile "$destdir" &&
chown --reference="$destdir" "$destdir/myfile"
done
Выполнение этого сxargs
:
printf '%s\n' /home/*/Desktop/ | xargs -I {} sh -c 'cp myfile "$1" && chown --reference="$1" "$1/myfile"' sh {}
Я не уверен, что это спасет вас от вашей ошибки, но как только вы оправитесь от этой ошибки, вам следует подумать об использовании update-alternatives
утилиты -, которая предназначена для ситуаций, когда используется более одной версии одной и той же программы. установлено. Вот пошаговая инструкция -по изменению Python по умолчанию с 2.X на 3.Y
Проверьте базовый уровень вашей системы(это из моей системы):
$ python --version
Python 2.7.16
$ python3 --version
Python 3.7.3
Чтобы команда python
по умолчанию использовалаpython3
:
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
Ответ должен быть:
update-alternatives: using /usr/bin/python3 to provide /usr/bin/python (python) in auto mode
Повторно проверьте базовый уровень:
$ python --version
Python 3.7.3
$ python3 --version
Python 3.7.3
Подробнее см. man update-alternatives
. Если вы хотите «отменить» это:
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 10
Что должно дать такой ответ:
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode