копировать и переименовывать файлы на 2 каталога вверх

Если у вас нет системы SPARC, эмуляция - единственный вариант.

QEMU может эмулировать станции SPARCstations , работающие под управлением Solaris до версии 9. Solaris 10 не поддерживает 32-битные платформы, поэтому он не может работать с эмуляцией sun4m ; У меня сложилось впечатление, что он все еще не работает на эмуляции sun4u (которая в любом случае все еще находится в стадии бета-тестирования).

QEMU можно запускать на многих различных платформах, включая большинство дистрибутивов Linux и Windows.

2
16.10.2017, 07:53
1 ответ

Используйте 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.

1
27.01.2020, 22:03

Теги

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