终端 - 在子目录和移动文件中创建多个相同的文件夹

时间:2013-07-19 00:54:47

标签: macos terminal

我有一堆文件,我正在尝试快速组织,我有两个问题,如何做到这一点。我非常感谢任何帮助!我尝试搜索但无法找到有关OSX的这些特定命令的任何内容。

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

例如,我有

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

有没有办法可以在一个命令中的每个名为“定价”的文件夹中创建一个文件夹,即 - &gt;

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

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

    非常感谢〜!帮助这些中的任何一个都是非常宝贵的。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用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