【问题标题】:batch - filter folders by name with "@" at beginning批处理 - 按名称过滤文件夹,以“@”开头
【发布时间】:2018-01-09 21:46:13
【问题描述】:

我确实有带有文件夹的文件夹

my_folders
    @folder1
    @next_one
    some_folder_without_at
    @third
    some_file.txt

到目前为止,我已经添加了所有文件夹

for /d %%i in ("C:\my\path\to\my_folders\*") do (
    call :setfolders %%i
)

目标:我想过滤结果并添加仅以@开头的文件夹

【问题讨论】:

  • 标签上写着 bash 但脚本看起来像 Windows/DOS 批处理文件?
  • 你确定你在谈论 bash 吗?在我看来不像。您是否在该模式的末尾尝试过@*
  • 如果 bash 使用 glob @*
  • 在 *nix 下这很容易...find /path/my_folders -type d -name @\* -print

标签: batch-file for-loop filter pattern-matching directory


【解决方案1】:

如果你只想处理my_folders目录中以@开头的文件,通配符很简单:

for i in my_folders/@*;
do
    setfolders "$i"
done

如果您只想处理那些本身就是目录的内容,您可以选择将/ 添加到通配符中,或者在循环中测试类型:

for i in my_folders/@*/;
do
    setfolders "${i%/}"
done
for i in my_folders/@*;
do
    test -d "$i" && setfolders "$i"
done

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多