将特定文件从目录和子目录复制到mac

时间:2018-03-31 08:12:49

标签: java command-line copy directory-structure subdirectory

我有一个目录结构,其中我有一些特定的文件(比如mp3文件)直接组织或在子目录(最多n级)。 例如:

  • 音乐文件夹
    • a.mp3
    • 文件夹2
    • folder3
    • b.mp3
    • c.mp3
    • folder4
    • d.mp3
    • folder5
    • folder6
      • folder7
      • folder8
        • e.mp3

现在,我需要的是将所有文件夹(.mp3文件)从所有文件夹和子文件夹复制到另一个目标文件夹。所以我的目标文件夹就像这样:

  • targetFolder
    • a.mp3
    • b.mp3
    • c.mp3
    • d.mp3
    • e.mp3

我尝试了以下问题的答案: Recursive copy of specific files in Unix/Linux?

Copy all files with a certain extension from all subdirectories,但被复制了相同的目录(和子目录)结构。

任何帮助或建议?

2 个答案:

答案 0 :(得分:1)

cd "Music Folder"
find . -name "*.mp3" -exec cp {} /path/to/targetFolder \;

答案 1 :(得分:0)

使用java代码,我实现如下:

Path start = Paths.get("/Users/karan.verma/Music/iTunes/iTunes Media/Music");
        int maxDepth = 15;
        try(Stream<Path> stream = Files.find(start, 
                    maxDepth, 
                    (path, attr) -> String.valueOf(path).endsWith(".mp3"))){

            List<Path> fileName = stream
                    .sorted()
                    .filter(path -> String.valueOf(path).endsWith(".mp3"))
                    .collect(Collectors.toList());

            for(Path p : fileName) {
                Path path = Paths.get("/Users/karan.verma/Desktop/TestCopy/"+p.getFileName());
                Files.copy(p, path,StandardCopyOption.REPLACE_EXISTING);
            }
        }catch(Exception e){
            e.printStackTrace();
        }