如何复制与所在文件夹同名的文件?

如何复制与所在文件夹同名的文件?

子目录中有类似模式的文件name/name.ext。子目录中有许多具有相同扩展名的文件,但我只想复制具有上述模式的文件。实现此目的的命令是什么?

答案1

可能有一个巧妙的方法可以使用具有更广泛的文件名生成(通配符)功能的 shell(如 zsh),但如果你不能这样做,那么 GNUfind命令支持正则表达式匹配,至少对某些正则表达式类型使用反向引用。例如给定

$ tree .
.
├── bar
│   ├── 1.xyz
│   ├── 2.xyz
│   └── 3.xyz
├── baz
│   ├── 1.xyz
│   ├── 2.xyz
│   ├── 3.xyz
│   └── baz.xyz
└── foo
    ├── 1.xyz
    ├── 2.xyz
    ├── 3.xyz
    └── foo.xyz

3 directories, 11 files

然后

$ find . -regextype posix-extended -regex '.*/([^/]+)/\1\.xyz$'
./baz/baz.xyz
./foo/foo.xyz

您可以修改它以复制

find . -regextype posix-extended -regex '.*/([^/]+)/\1\.xyz$' -exec cp -n -t path/to/newdir/ {} +

答案2

以下将把 ./name/name.txt 复制到 . (您的当前目录)

cp name/name.txt .

相关内容