Как я могу переименовать несколько файлов, если использование mv или переименование *. * не работает? [дубликат]

Примечание: Задав этот вопрос, я обнаружил, что Файловый браузер Thunar, который поставляется с Xubuntu и может быть установлен в любой версии Ubuntu, предоставляет утилиту массового переименования, которая мне подходит.


Я пытаюсь добавить хэши временных меток к файлам в каталоге или к userFileCode, например к паролю файла (например, все файлы пользователя имеют префикс или суффикс).

Моя проблема в том, что команда mv работает только один раз, поэтому я не могу использовать такие символы подстановки, как

mv *.* *.*_dateHashsuffix

ошибка говорит, что это не каталог.

Похоже, что mv не может обрабатывать несколько переименований, или мне нужно использовать его, как в cd / usr / bin && sudo mv test test_disabled && mv sudo sudo_disabled ... в другом слова, возможно, мне нужно передать по конвейеру ls> filelist.tst , а затем проанализировать (могу ли я использовать здесь | grep ?), который отдельно в скрипте файла .sh с разрешениями на исполняемые файлы запустите как ./ myscriptsname.sh или я не могу использовать ls> непосредственно в скрипте?

Я вижу, что в будущем это можно будет использовать на моих серверах, чтобы переименовывайте переменные и файлы, чтобы предотвратить взлом. Но в целом лучшей идеей могут быть torrentDNS и zipSites в веб-браузере на основе вокселей со ссылками на содержимое веб-страницы.

0
задан 22 October 2018 в 04:17

1 ответ

Вы не можете использовать подстановочные знаки в месте назначения mv- команда. То, что Вы думаете, подстановочные знаки, интерпретируется как первые три символа целевого имени.

mv *.* *.*_something

попытается переименовать любой файл с точкой в ее имени файла в текущем каталоге к имени *.*_something. Это будет успешно для первого файла, который находит оболочка. Вторая попытка перестанет работать потому что файл *.*_something уже существует, таким образом Вы получаете ошибку при высказывании, что место назначения не является каталогом.

Необходимо пойти иначе:

for num in *.*; do mv "${num}" "${num}_something"; done
4
ответ дан 27 October 2019 в 07:38

Другие вопросы по тегам:

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