【问题标题】:Terminals - Creating Multiple Identical Folders within Subdirectories and Moving Files终端 - 在子目录中创建多个相同的文件夹并移动文件
【发布时间】:2013-07-19 13:10:39
【问题描述】:

我有一堆文件要快速组织,我有两个关于如何做到这一点的问题。我真的很感激任何帮助!我尝试搜索,但在 OSX 的这些特定命令上找不到任何内容。

首先,我在一个目录中有大约 100 个文件夹 - 我想在每个文件夹中放置一个文件夹。

例如,我有

Cars/Mercedes/<br>
Cars/BMW/<br>
Cars/Audi/<br>
Cars/Jeep/<br>
Cars/Tesla/

有没有一种方法可以在一个命令中在每个名为“定价”的文件夹中创建一个文件夹,即 ->

Cars/Mercedes/Pricing <br>
Cars/BMW/Pricing<br>
Cars/Audi/Pricing<br>
Cars/Jeep/Pricing<br>
Cars/Tesla/Pricing 
  1. 我的第二个问题有点难以解释。在每个文件夹中,我想将某些文件移动到子目录中这些新创建的文件夹(上图)中。

    每个文件的文件名略有不同,但包含相同的字母字符串 - 例如,在上述每个文件夹中,我可能都有

    汽车/梅赛德斯/payment123.html
    汽车/宝马/payment432.html
    汽车/奥迪/payment999.html
    汽车/吉普车/payment283.html

有没有办法在每个子目录中搜索包含字符串“payment”的文件并将该文件移动到该子目录中的子文件夹中 - 即进入我们刚刚在上面创建的假设“定价”文件夹中,所有子目录都使用一个命令在汽车?

非常感谢~!对其中任何一个的帮助将是无价的。

【问题讨论】:

    标签: macos terminal


    【解决方案1】:

    我假设您使用的是 bash,因为它是 OS X 中的默认 shell。一种方法是在每个目录上使用 for 循环来创建子目录并移动文件。通配符用于查找所有目录和文件。

    for DIR in Cars/*/ ; do
        mkdir "${DIR}Pricing"
        mv "${DIR}payment*.html" "${DIR}Pricing/"
    done
    

    第一行查找 Cars 中的每个目录,然后为每个目录运行一次循环,将 ${DIR} 替换为当前目录。第二行使用替换创建子目录。请注意双引号,仅当路径可以包含空格时才需要使用双引号。第三行将目录中名称以“payment”开头并以“.html”结尾的任何文件移动到子目录。如果您有多个与此匹配的文件,它们都将被移动。第四行只是标记循环的结束。

    如果你直接在命令行中输入这个,你可以把它合并成一行:

    for DIR in Cars/*/ ; do mkdir "${DIR}Pricing"; mv "${DIR}payment*.html" "${DIR}Pricing/"; done
    

    【讨论】:

      猜你喜欢
      • 2013-01-09
      • 1970-01-01
      • 2023-02-08
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2014-06-02
      相关资源
      最近更新 更多