У меня есть много файлов, которые я хочу переместить в папки, их имена - что-то вроде этого dir1/dir2/dir3/name_of_file.ex
и затем возможно, другого называют /dir4/name_of_file2.xe
Имеет ли так или иначе перемещение тех файлов в каталог dir1/dir2/dir3
и измените имя его к только name_of_file.ex
автоматически?
Я действительно не знаю, как я могу объяснить это легче.. но у меня есть почти 1 000 файлов с именами как TSData\Res\Catalog\Scripts\deckfoundations.txt
и TSBin\Sims2.exe
и то, что я хочу сделать с теми файлами, должно переместиться в папку TSData\Res\Catalog\Scripts\
и затем переименуйте файл к только deckfoundations.txt
. не знайте, знаете ли Вы PHP, но там у Вас есть взорвать функция, где Вы взрываете название файла с символом
$ar = end(explode("/", $filename));
print_r($ar);
произвел бы что-то вроде этого
Array
(
[0] => TSData\Res\Catalog\Scripts
[1] => deckfoundations.txt
)
Затем с этим я мог использовать первую строку, чтобы создать папку если не существующий и затем переименовать полный $filename к второй строке $ar
Вы можете попробовать инструмент переименования файлов, такой как перечисленные в ссылке , предоставленной тахионами в комментариях.
Если это не поможет, вам может понадобиться написать что-нибудь.
Как вы говорите в этом вопросе, вы знаете PHP, почему бы не написать решение самостоятельно на PHP. То, что вы предлагаете, кажется разумным подходом.
У меня есть сценарий, который я использую для поиска, переименования и перемещения файлов за один раз . Вы можете изменить его в соответствии с вашими целями, если хотите; в настоящее время он настроен на случайное переименование файлов, но вы можете установить шаблон для их переименования.
Кстати, скрипт перемещает все файлы в текущий рабочий каталог (тот, в котором он выполняется), но, опять же, это можно изменить. Вам, очевидно, придется изменить местоположение ~/Downloads
и заменить расширения .jpg тем, что вам нужно.
Я не совсем уверен, что это именно то, что вы хотите, но это может быть полезным в качестве шаблона для вас и всех остальных. Сохраните его в своем любимом текстовом редакторе и сделайте его исполняемым.
ПРИМЕЧАНИЕ : если вы изменяете сценарий, но сохраняете функцию случайного переименования, имейте в виду, что иногда могут возникать коллизии (т. Е. Генерируются одинаковые числа и новый файл переопределяется), поскольку существует ограниченное количество новых имен файлов, которые могут генерировать даже два экземпляра $ RANDOM. маловероятно произойти, так как файлы помечаются двумя наборами случайных чисел, но может быть лучше иметь другую систему нумерации, если ваши файлы очень важны или критичны в любом случае.
#!/bin/bash
# a script to recursively find all jpgs in a specified directory, rename with a random label and transfer to pwd
find ~/Downloads -type f -iname '*.jpg' -print0 |
while IFS= read -r -d '' f;
do mv -- "$f" "$RANDOM-$RANDOM.jpg";
done