Используйте find
иshell (POSIX sh/bash/Korn/zsh) parameter substitution expansion
следующим образом.
find. -type f -name "F3.bam" -execdir sh -c '
trgt="${PWD%/*/*}"; echo cp -v "$1" "${trgt}/${trgt##*/}_${1#./}" ' _ '{}' \;
Пояснения::
Мы ищем файлы, соответствующие только F3.bam
и с -execdir
здесь, find
изменяет текущий каталог на каталог, в котором найден файл F3.bam
, затем выполняем sh -c '... '
внутри самого этого каталога.
С помощью trgt="${PWD%/*/*}"
«сокращать -до -до -первого -суффикса» :Мы избавляемся от имени файла и двух уровней его под-каталоги в/samples/mydata1/RUN1/ID_date**/PCR2/TIME1**
(полужирный часть, которая соответствует суффиксу /*/*
, удалит )и присвоит переменной trgt
. Итак, для первого файла trgt
теперь установлено значение /samples/mydata1/RUN1/ID_date
.
"$1"
является относительным путем./filename
к текущему $PWD
.
В ${trgt##*/}_
"сокращать -до -до -последнего префикса -" :Мы использовали значение переменной trgt
, чтобы получить имя подкаталога -, которое должно предшествовать -. ] зависит от имени файла, так что это вернет только ID_date
, ID2_date4
или IDxxx_datexxx
и т. д. (, удалив все до последней косой черты /
, увиденной ), и добавит подчеркивание _
.
Этот ${1#./}
удаляет точку -косую черту ./
из относительного ./filepath
.
Если я правильно понял (, наконец, ), значит, вы настроили свою сеть с помощью dhcpcd.conf (, а не dhcpd.conf)
Я предполагаю, что эта конфигурация принимает форму, подобную этой:
interface eth0
static ip_address=192.168.2.31/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8 4.2.2.1
Чтобы установить домен и домен поиска, вы должны просто добавить что-то вроде этого:
static domain_name=example.com
static domain_search=example.com
Другими словами, вам просто нужно установить domain_search
как статическую опцию.
Для справки см. здесьhttp://www.techsneeze.com/configuring-static-ip-raspberry-pi-running-raspbian/
Как отмечается в ФП, эта опция очень хорошо скрыта. Это предполагается, потому что dhcpcd — это инструмент настройки сети, основанный на концепциях DHCP. В dhcpcd вы устанавливаете статическую конфигурацию, определяя (части )ответа DHCP. Таким образом, в этой ситуации ответ состоит в том, чтобы просто добавить domain_search
к статически определенным значениям.
Причина того, что это плохо документировано, может быть связана с тем фактом, что DHCP позволяет добавлять пользовательские параметры DHCP. Поэтому dhcpcd не может перечислить все опции, которые вы могли бы определить статически. Как оказалось, domain_search
не является частью основного стандарта DHCP, он закреплен RFC 3397 .
Это сказано. Лучше бы это было описано в инструкции.
Я не знаю, как получить ответ с помощью nslookup. НО для программы, которая использует файл nsswitch.conf, чтобы сообщить ей, как решать проблемы, вы можете сделать это, ЕСЛИ целью вашего запроса является запуск avahi (или любой нулевой _conf, также известный как демон mDNS ). Getent cmd является такой утилитой. Например, в моей локальной сети есть компьютер с именем «тень»
.`getent hosts shadow`
ничего не возвращает.
но getent hosts shadow.local
возвращается:
192.168.1.76 shadow.local
avahi-resolve -n shadow
возвращает
Failed to create host name resolver: Invalid host name
avahi -разрешение -n shadow.local возвращает:
shadow.local 192.168.1.76
Хотя я никогда и нигде не определял домен как "локальный".
Чтобы это работало, цель должна находиться в строке -, чтобы она могла отвечать на опросы mDNS. Например, если host hector не в сети:
avahi-resolve -n hector.local
Failed to resolve host name 'hector.local': Timeout reached
getent hosts hector.local
время истекло без возврата
КЛЮЧ должен иметь следующую строку в вашем файле /etc/nsswitch.conf:
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Это приведет к тому, что cmd-подобный getent сначала проверит файл /etc/hosts и, если хост не будет найден там, попытается использовать средство mDNS.
Я думаю, что установка и запуск avahi автоматически добавляет нужные библиотеки в путь (s ), который проверяет getent, так что когда getent видит mdns4 _минимальный в файле nsswitch.conf, он знает, что делать.
Вышеупомянутое является чем-то вроде (неудовлетворительного )хака. Мне было бы очень интересно узнать, как заставить dhcpd делать то, что вы хотите. pgmer6809