我有一堆文件,我正在尝试快速组织,我有两个问题,如何做到这一点。我非常感谢任何帮助!我尝试搜索但无法找到有关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
我的第二个问题有点难以解释。在每个文件夹中,我想将某些文件移动到子目录中这些新创建的文件夹(上图)中。
每个文件的文件名略有不同,但包含相同的字母串 - 例如,在上述每个文件夹中,我可能有
汽车/梅赛德斯/ payment123.html
汽车/宝马/ payment432.html
汽车/奥迪/ payment999.html
汽车/吉普/ payment283.html
有没有办法搜索每个子目录中包含字符串“payment”的文件,并将该文件移动到该子目录中的子文件夹中 - 即进入我们上面创建的假设“Pricing”文件夹中,所有子目录都有一个命令在汽车?
非常感谢〜!帮助这些中的任何一个都是非常宝贵的。
答案 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