如何使用自动重命名复制给定文件夹中的所有文件

如何使用自动重命名复制给定文件夹中的所有文件

我基本上想要做的是获取目录中的所有文件并在同一目录中复制它们,从而使目录大小加倍。

然而,当我尝试使用 cp 时,它一直告诉我它们是同一个文件,这就是重点。

有没有办法像 Windows 那样在复制它们的同时将它们重命名为 (1)、(2) 等?

答案1

你可以做点什么相似的针对 Windows 行为,使用以下--backup=numbered选项:

$ ls dir1
apple  banana  carrot  date  egg  fish  grape  ham

然后

$ for f in dir1/*; do cp -vf --backup=numbered "$f" "$f"; done
'dir1/apple' -> 'dir1/apple.~1~'
'dir1/banana' -> 'dir1/banana.~1~'
'dir1/carrot' -> 'dir1/carrot.~1~'
'dir1/date' -> 'dir1/date.~1~'
'dir1/egg' -> 'dir1/egg.~1~'
'dir1/fish' -> 'dir1/fish.~1~'
'dir1/grape' -> 'dir1/grape.~1~'
'dir1/ham' -> 'dir1/ham.~1~'

给予

$ ls dir1
apple      banana.~1~  date      egg.~1~   grape      ham.~1~
apple.~1~  carrot      date.~1~  fish      grape.~1~
banana     carrot.~1~  egg       fish.~1~  ham

请注意,仍然需要-f(或)来覆盖默认的“同一文件”行为。--force

相关内容