SSH и VPN Listener Security

Ваш вопрос, как написано, предполагает, что вы хотите искать во всей файловой системе файлы Analysis.mzXML, даже если они появляются в /lib/perl5/5.14/Unicode/Collate/Locale, /proc/sys/net/ipv4/conf/all, /sys/devices/system/cpu/cpu0/cache, /usr/share/doc/cmake/html/_sources, или аналогично маловероятные / неподходящие места — и что вы хотите переместить файлы в корневой каталог, что также кажется маловероятным/ неуместным. Я предположил, что вы работаете из какого-то другого каталога.

Запустите эту команду:

find. -mindepth 7 -maxdepth 7 -type f -name Analysis.mzXML -exec sh -c 'for arg do echo mv -i -- "$arg" "$(echo "$arg" | sed -e "s|^\./||" -e "s|/dir6/Analysis\.mzXML|.mzXML|" -e "s|/|_|g")"; done' sh {} +

Вы можете не указывать -mindepth 7 -maxdepth 7если вы уверены, что все файлы Analysis.mzXMLнаходятся на седьмом уровне. Эта команда находит все файлы Analysis.mzXMLна седьмом уровне. и передает их мини-сценарию оболочки -. Это берет каждый путь, удаляет ./в начале и dir6в конце вместе с Analysisчастью имени файла, и изменяет все оставшиеся символы /на _. Это должно дать что-то вроде этого:

mv -i --./dir1/dir2/dir3/dir4/dir5/dir6/Analysis.mzXML dir1_dir2_dir3_dir4_dir5.mzXML
mv -i --./the/quick/brown/fox/jumps/dir6/Analysis.mzXML the_quick_brown_fox_jumps.mzXML
mv -i --./over/the/lazy/dog/foo bar/dir6/Analysis.mzXML over_the_lazy_dog_foo bar.mzXML

Если это выглядит правильно, запустите команду еще раз, но удалите первый echo(, т.е. замените echo mvпросто наmv).

Примечания:

  • Это не подтверждает, что каталог шестого уровня на самом деле называется dir6. Если он находит файл Analysis.mzXMLв dir11/dir12/dir13/dir14/dir15/dir16он переименует этот файл к dir11_dir12_dir13_dir14_dir15_dir16_Analysis.mzXMLа не dir11_dir12_dir13_dir14_dir15.mzXML.
  • -iзаставит mvзапросить подтверждение если он пытается переместить файл на имя, которое уже существует.
  • --должен защитить вас от аргументов, начинающихся с-. Это не должно быть проблемой, поскольку $argвсегда должно начинаться с ./.
  • Если вы действительно хотите сделать это из корня файловой системы, это должно сработать. Просто cd /и следуйте приведенным выше инструкциям.

Запоздалая мысль :Это может привести к сбою, если у вас есть каталог с именем Analysis.mzXML. Так что не делайте этого.

0
18.03.2020, 15:10
0 ответов

Теги

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