MOVE 的单行命令保留相同的文件夹结构

MOVE 的单行命令保留相同的文件夹结构

我已经找到了很多解决此问题的方法,但都是复制文件然后删除。我需要一个命令来逐个移动或复制并删除文件。

我对命令行不太熟悉,所以我可以在下面管理它,但我不确定如何在复制后删除。

find . -name "*.extension" -exec cp --parent {} ../NewFolder/ \;

使用 OSX。谢谢。

答案1

不要只是复制你的 exec,而是做两件事"cp ..... && rm {} \;"

&&在 bash 中表示“仅当上一个命令成功退出(错误代码为 0)时才运行此命令

答案2

要模仿cp --parents,需要将mkdirmv一起使用。

find . -name "*.extension" -exec sh -c 'dir=../NewFolder/$(dirname "{}"); mkdir -p "$dir" && mv -v "{}" "$dir"' \;

详细控制台剪切粘贴:

$ tree source
source
└── a
    ├── b
    │   ├── b.extension
    │   ├── c
    │   │   └── c.extension
    │   └── d
    └── e
        └── f
            └── f.extension

6 directories, 3 files
$ tree dest
dest

0 directories, 0 files
$ cd source
$ find . -name "*.extension" -exec sh -c 'dir=../dest/$(dirname "{}"); mkdir -p "$dir" && mv -v "{}" "$dir"' \;
'./a/e/f/f.extension' -> '../dest/./a/e/f/f.extension'
'./a/b/c/c.extension' -> '../dest/./a/b/c/c.extension'
'./a/b/b.extension' -> '../dest/./a/b/b.extension'
$ cd ..
$ tree source
source
└── a
    ├── b
    │   ├── c
    │   └── d
    └── e
        └── f

6 directories, 0 files
$ tree dest
dest
└── a
    ├── b
    │   ├── b.extension
    │   └── c
    │       └── c.extension
    └── e
        └── f
            └── f.extension

5 directories, 3 files

相关内容