How can I use the parallel command to exploit multi-core parallelism on my MacBook?

后端 未结 4 1339
孤城傲影
孤城傲影 2021-01-27 04:13

I often use the find command on Linux and macOS. I just discovered the command parallel, and I would like to combine it with find command

4条回答
  •  故里飘歌
    2021-01-27 04:51

    You appear to want to be able to locate files quickly in large directories under macOS. I think the correct tool for that job is mdfind.

    I made a hierarchy with 10,000,000 files under my home directory, all with unique names that resemble UUIDs, e.g. 80104d18-74c9-4803-af51-9162856bf90d. I then tried to find one with:

    mdfind -onlyin ~ -name 80104d18-74c9-4803-af51-9162856bf90d
    

    The result was instantaneous and too fast to measure the time, so I did 100 lookups and it took under 20s, so on average a lookup takes 0.2s.


    If you actually wanted to locate 100 files, you can group them into a single search like this:

    mdfind -onlyin ~ 'kMDItemDisplayName==ffff4bbd-897d-4768-99c9-d8434d873bd8 || kMDItemDisplayName==800e8b37-1f22-4c7b-ba5c-f1d1040ac736 || kMDItemDisplayName==800e8b37-1f22-4c7b-ba5c-f1d1040ac736'
    

    and it executes even faster.


    If you only know a partial filename, you can use:

    mdfind -onlyin ~ "kMDItemDisplayName = '*cdd90b5ef351*'"
    /Users/mark/StackOverflow/MassiveDirectory/800f0058-4021-4f2d-8f5c-cdd90b5ef351
    

    You can also use creation dates, file types, author, video duration, or tags in your search. For example, you can find all PNG images whose name contains "25DD954D73AF" like this:

    mdfind -onlyin ~ "kMDItemKind = 'PNG image' && kMDItemDisplayName = '*25DD954D73AF*'"
    /Users/mark/StackOverflow/MassiveDirectory/9A91A1C4-C8BF-467E-954E-25DD954D73AF.png
    

    If you want to know what fields you can search on, take a file of the type you want to be able to look for, and run mdls on it and you will see all the fields that macOS knows about:

    mdls SomeMusic.m4a
    mdls SomeVideo.avi
    mdls SomeMS-WordDocument.doc
    

    More examples here.

    Also, unlike with locate, there is no need to update a database frequently.

自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题