переместить файлы, соответствующие именам файлов, в другой каталог

переместить файлы, соответствующие именам файлов, в другой каталог

У меня есть два каталога: dir_1в котором есть a.mp4, b.mp4, c.mp4, d.mp4и dir_2в котором есть только a.txt, b.txt. Скрипт должен переместиться a.mp4и b.mp4в dir_3, поскольку только эти имена файлов соответствуют именам файлов в dir_2. Мне сложно следовать скриптам, когда мне нужно выполнить эти типы конкретных операций.

решение1

Пытаться,

for f in "dir_2"/*; do
    filename=${f##*/}
    mv -t "dir_3" "dir_1/${filename%.*}".*
done
  • Зациклить файлы dir_2(используйте *.txtдля зацикливания только этих файлов)
  • ${f##*/}выдает имя файла без пути.
  • ${filename%.*}возвращает имя файла без расширения.
  • mv -t "dir_3" "dir_1/${filename%.*}".*перемещает все файлы с указанным filename(очищенным от расширения) в dir_3. Вы можете указать .mp4вместо , .*если хотите.

Связанный контент