Использование программы переименования, сильно завинченной некоторые мои файлы. Я пытаюсь вернуть их в порядке.
У меня есть файловая структура как это:
./Hello World/some-filename.ext
./Kitty Parade/another.ext
./Third Example/abc.ext
./some-filename.ext2
./another.ext2
./abc.ext2
Целью является перемещение файлы в текущей папке (./) назад к их исходным папкам.
Например:
another.ext2
принадлежит ./Kitty Parade/
папка
some-filename.ext2
принадлежит ./Hello World/
папка
abc.ex2
принадлежит ./Third Example/
папка'
Правило может быть описано как это: Если файл существует в текущей папке (./
), найдите папку, чем содержит файл с тем же именем файла (но с другим расширением), и переместите его в ту папку.Примечание: нет никакого надежного отношения между ./myFilename
и что файл ./originalFolderName
.
Это произошло с более чем 4 000 файлов иначе, я сделаю это вручную. Какая-либо возможная справка?
Попробуйте эту часть волшебства оболочки:
for i in *.*; do
BASE=$(basename "$i" .ext2)
LIST=*/"${BASE}".*
DIR=$(dirname "${LIST}")
mv -n "$i" "${DIR}"
done
Или как острота:
for i in *.*; do mv -n "$i" "$(dirname */"$(basename "$i" .ext2)".*)"; done
Прежде:
whitequark@forth:~/test$ ls *
test 1.ext2 test 2.ext2 test 3.ext2
f 1:
test 1.ext
f 2:
test 2.ext test 3.ext
После:
whitequark@forth:~/test$ ls *
f 1:
test 1.ext test 1.ext2
f 2:
test 2.ext test 2.ext2 test 3.ext test 3.ext2
-n
переключатель защитит Вас от перезаписи чего-либо.