Как переименовать и переместить тысячи файлов сразу?

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

2
задан 29 July 2012 в 18:28

2 ответа

Вы можете попробовать инструмент переименования файлов, такой как перечисленные в ссылке , предоставленной тахионами в комментариях.

Если это не поможет, вам может понадобиться написать что-нибудь.

Как вы говорите в этом вопросе, вы знаете PHP, почему бы не написать решение самостоятельно на PHP. То, что вы предлагаете, кажется разумным подходом.

0
ответ дан 29 July 2012 в 18:28

У меня есть сценарий, который я использую для поиска, переименования и перемещения файлов за один раз . Вы можете изменить его в соответствии с вашими целями, если хотите; в настоящее время он настроен на случайное переименование файлов, но вы можете установить шаблон для их переименования.

Кстати, скрипт перемещает все файлы в текущий рабочий каталог (тот, в котором он выполняется), но, опять же, это можно изменить. Вам, очевидно, придется изменить местоположение ~/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
0
ответ дан 29 July 2012 в 18:28

Другие вопросы по тегам:

Похожие вопросы: