Я искал темы на эту тему, но мне не удалось добиться того, что мне нужно. Любое решение, будь то в Ubuntu или в Windows cmd будет с благодарностью.

Текущая структура

/folderA/*.txt

около 100 папок на уровне A и около 50 .txt файлов на папку. Структура должна стать:

/folderA/proj/*.txt

Мне нужно рекурсивно переместить все текстовые файлы на один уровень глубже в новую подпапку с именем proj .

3 ответа3

0

Это можно сделать с помощью следующего скрипта. Вот как выглядит ваша существующая структура каталогов. Существует около 100 папок с 50 TXT-файлами в каждой.

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

proj.bat

@echo off
setlocal EnableDelayedExpansion

FOR /D %%G IN (fold*) DO (
MKDIR "%cd%\%%G\proj"
MOVE "%cd%\%%G\*.txt" "%cd%\%%G\proj"
)
0

Это должно сделать это в Bash:

#!/bin/bash
shopt -s dotglob
find * -prune -type d | while read d; do 
     mkdir "$d"/proj
     mv "$d"/*.txt "$d"/proj
done

Если вы должны использовать Windows, попробуйте это:

@ECHO OFF
FOR /D %%G IN (*) DO (
    MKDIR "%%G"\proj
    MOVE "%%G"\*.txt "%%G"\proj > nul
)
0

Переместите файлы и папки в /folderB/proj/*.txt . Удалить folderA . Переименуйте folderB в folderA

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .