Я знаю, что это не отвечает на Ваш вопрос, но если Вы искали другой способ переименовать файлы по сравнению с Вашим обходным циклом, почему бы не использовать find
? Я использовал эту команду много раз, чтобы заменить расширения файлов в больших каталогах на сотни тысяч файлов. Это должно работать на любой POSIX-совместимой системе:
find . -name "*.gappedPeak" -exec sh -c 'mv "$1" "${1%.gappedPeak}.bed"' _ {} \;
Command Breakdown:
'
.
' => путь поиска, начинающийся с текущей директории, помеченной ' . '
-name
=> установить имя поиска совпадений (в этом случае все файлы, которые заканчиваются на.gappedPeak
)
-exec
=> для каждого совпадения
sh -c
=> 'exec' создает независимое окружение оболочки для каждого совпадения
mv "$1" "${1%". gappedPeak}.bed"
=>mv
первая переменная (обозначена $1), который является текущим именем файла, на новое имя. Здесь я делаю сравнение подстроки и удаляю; поэтому снова возьмите первый var, $1 и используйте%
для удаления.gappedPeak
из строки. В конце.bed
просто соединяет оставшуюся переменную, которая теперь является простотестом #
, с.bed
, создавая новыйtest #.bed
.filename.Подчёркивание - это место для $0
Имя
{}
заменяется именем каждого (*.gappedPeak
) найденного файла. командойнайти
и становится 1 командойsh
.
\;
отмечает конец команды-exec
. Вы также можете использовать';'
или";"
.
Пример:
[user@before]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Jan 26 11:40 test1.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test2.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test3.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test4.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test5.gappedPeak
[user@after]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Jan 26 11:40 test1.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test2.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test3.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test4.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test5.bed
Как более общее решение, вы можете использовать xargs
. Таким образом, вы можете отделить действие из списка каталогов, на которых вы хотите работать.
Сначала напишите скрипт, который выполняет необходимые действия:
#!/bin/bash
# Exit immediately on error
set -e
if [[ $# -ne 1 ]] ; then
echo "USAGE: $0 DIRECTORY" >&2
exit 1
fi
cd "$1"
ls -l ander ander.band ander.data
cat ander.in
cat ander.log
pwd
Отметьте скрипт в виде исполняемого файла:
chmod +x perform_ander.sh
Наконец-то запускается:
find -type d -name 'E*_U' | xargs -n1 ./perform_ander.sh
A Найти
Команда выводит все соответствующие файлы на STDOUT
-TYPE D
Пределы поиска по каталогам
-NAME 'E * _U'
ограничивает поиск каталогов, которые соответствуют глобусу
Команда xargs
использует свой стандартный вход в качестве источника аргументов и вызывает заданные команды с этими аргументами.
Команда
-N1
Указывает, что не более 1 аргумента пропускается одновременно.
Обычно создается учетная запись ОС MySQL
. Это пользователь, который запускает MySQL-демон.
Большинство пакетов, которые поставляются с демоном, создаст свою собственную учетную запись пользователя, чтобы предотвратить вмешательство или проблемы безопасности между различными пакетами.
Пользователь под названием MySQL
не создается автоматически в рамках базы данных.
пользователи , перечисленные в таблице MySQL пользователь
, отличаются от учетных записей операционной системы (входа), хотя могут использоваться те же имена .
Например, типичная база данных MySQL имеет пользователя root
, который является администратором. Но его пароль хранится в базе данных MySQL, а операционная система хранит свой пароль в / etc / shadow
(или, реже, в / etc / passwd
сейчас).
Пользователям MySQL могут быть предоставлены привилегии, например, часть прав, которыми обладает пользователь root. Эти привилегии находятся в самой базе данных и не связаны с правами доступа к файлам в операционной системе.
имена , используемые для пользователей базы данных MySQL, не обязательно должны иметь какое-либо отношение к именам таблицы в базе данных.Это отличается от базы данных Oracle, которая хранит таблиц в схемах , которые соответствуют пользователям . Пользователи Oracle также имеют пароли и (как и MySQL) им могут быть предоставлены привилегии. Как и в Oracle, привилегии пользователей MySQL могут быть ограничены таблицами.
Дополнительная литература: