Ваш вопрос, как написано, предполагает, что вы хотите искать во всей файловой системе файлы 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
. Так что не делайте этого.