递归地将pdf移动到给定名称的文件夹中

Recursively move pdf into a given name folder

我有这种情况:

父文件夹

1Sub
      some pdf file
      1Sub-sub
      Other-sub [empty]
 2Sub
      some pdf file
      2Sub-Sub
      Other-sub [empty]

我想将 pdf 递归移动到相关的现有子文件夹“Other-sub”(每个子文件夹都有相同的“other-sub”)。

我试试这个(在 windows 上,使用 CMDER):

find . -maxdepth 2 -type f -exec sh -c 'exec mv  ./*/Other-sub/' sh {} ;

但它不起作用。 有什么帮助吗? 提前致谢!

马泰奥·法迪尼

我建议最好使用 windows 来提供一个通用的 cmd 文件,您可以 运行 针对不同情况使用不同的方法。

所以这是一个模板,您可以从 cmder 调用,并将文件夹名称作为起始目录(我将默认设置为桌面),但您也可以将文件夹拖放到 .cmd 上以启动它。

MoveDown.cmd

@echo off & Title Move files down into sub folders

REM Set Vars presuming _TOP default is user\desktop but can be a dropped folder as a given unknown argument or manually run with a "drive:\folder path"

SETLOCAL EnableExtensions DisableDelayedExpansion
set "_TOP=%userprofile%\desktop"
if exist "%~1" set "_TOP=%~1"

set "_TARGET=Other-sub"
set "_TYPE=*.PDF"

:main
for /R "%_TOP%" %%a in (.) do (
    if exist "%%a\%_TARGET%" (
        move /Y "%%a\%_TYPE%" "%%a\%_TARGET%"
    )
)
REM remove the pause if you are happy its not need to confirm actions when drag and dropping a folder
pause
endlocal & exit /B

有很多方法可以在 windows 中构建您自己的脚本,所以上面使用的是本机 cmd,但您可以使用 power-shell 或 VBscript 或 Jscript 甚至是 cmder 宏和 bash 脚本。最大的问题是哪些命令表现得更好,或者更容易通过其中一个或另一个错误检查来构建。

我在上面没有包含错误检查所以如果适应其他用途请测试。