Как создать псевдоним для пользователей в Gnu/linux?

Проблема связана с пробелами в именах файлов. Имена файлов разделены пробелами. Когда cpполучает более двух аргументов, последний аргумент должен быть каталогом. Это не так, поэтому он жалуется.

Чтобы удалить строку Edexcel International GCSE Physicsиз каждого имени файла и безопасно преобразовать пробелы в символы подчеркивания, используйте (вbash)

for name in 'Edexcel International GCSE Physics '*.docx; do
    newname=${name#Edexcel International GCSE Physics }
    newname=${newname// /_}

    mv -i "$name" "$newname"
done

Это перебирает все соответствующие файлы в текущем каталоге и создает новое имя в переменной newname, сначала удаляя известную подстроку с самого начала имени, а затем преобразуя оставшиеся пробелы в символы подчеркивания. Затем старое имя переименовывается в новое имя.

Измените mvна cp, если вы действительно хотите создавать копии файлов (, как в вашем коде ).

Тестирование:

$ ls
Edexcel International GCSE Physics Chapter 10 Properties of Waves Learning Plan.docx
Edexcel International GCSE Physics Chapter 11 The Electromagnetic Spectrum Learning Plan.docx
Edexcel International GCSE Physics Chapter 12 Light Waves Learning Plan.docx

(здесь запускается цикл)

$ ls
Chapter_10_Properties_of_Waves_Learning_Plan.docx
Chapter_11_The_Electromagnetic_Spectrum_Learning_Plan.docx
Chapter_12_Light_Waves_Learning_Plan.docx

Вы хотите применить это рекурсивно к нескольким подкаталогам?:

find. -type f -name 'Edexcel International GCSE Physics *.docx' -exec sh -c '
    for pathname; do
        name=$(basename "$pathname")

        newname=${name#Edexcel International GCSE Physics }
        newname=${newname// /_}

        mv -i "$pathname" "$(dirname "$pathname")/$newname"
    done' sh {} +

Связанные:

-1
21.03.2020, 18:47
1 ответ

Возможно, вы захотите поместить двух пользователей в groupи работать с этим. Насколько я понимаю, функция aliasпредназначена больше для commands, а не для users.

0
28.04.2021, 23:19

Теги

Похожие вопросы