У меня есть два каталога:
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
вместо ,.*
если хотите.