0

我有一堆文件要快速组织,我有两个关于如何做到这一点的问题。我真的很感激任何帮助!我尝试搜索,但在 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. 我的第二个问题有点难以解释。在每个文件夹中,我想将某些文件移动到子目录中这些新创建的文件夹(上图)中。

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

    Cars/Mercedes/payment123.html
    Cars/BMW/payment432.html
    Cars/Audi/payment999.html
    Cars/Jeep/payment283.html

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

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

4

1 回答 1

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
于 2013-07-19T05:10:39.753 回答