递归地将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 脚本。最大的问题是哪些命令表现得更好,或者更容易通过其中一个或另一个错误检查来构建。
我在上面没有包含错误检查所以如果适应其他用途请测试。
我有这种情况:
父文件夹
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 脚本。最大的问题是哪些命令表现得更好,或者更容易通过其中一个或另一个错误检查来构建。
我在上面没有包含错误检查所以如果适应其他用途请测试。