【问题标题】:Make n copies of files in folder and copy them to a specific folders [closed]在文件夹中制作n个文件副本并将它们复制到特定文件夹[关闭]
【发布时间】:2021-03-24 15:32:41
【问题描述】:

我已经编辑了这个问题,因为可能对其他人有用,而且,我的问题是下一个:

我有数百个文件,确切地说是 256 个,这些文件是 .csv, 我需要为每个文件生成一个包含 50 个副本的目录/文件夹, 例如:

-file1.csv---->folder_for_file1---->1copy_file1.csv,2copy_file1.csv,3copy_file1.csv........50copy_file1.csv
-file2.csv---->folder_for_file2---->1copy_file2.csv,2copy_file2.csv,3copy_file2.csv........50copy_file2.csv
-file3.csv---->folder_for_file3---->1copy_file3.csv,2copy_file3.csv,3copy_file3.csv........50copy_file3.csv
...
-file256.csv---->folder_forfile256---->1copy_file256.csv,2copy_file256.csv,3copy_file256.csv........50copy_file256.csv

我可以用什么来做到这一点??一些 bash 脚本或一些简单的 ubuntu/linux 命令,比如 mk dir?

PD/PS他们提供给我的答案,效果很好,但是我对生成的文件夹的名称有疑问,因为它的名称是文件的扩展名,对我没有用。

提前致谢

【问题讨论】:

  • 你在什么时候卡住了?使用cp 命令进行复制。与其先复制然后将文件移动到另一个地方,我只需将它复制到另一个目录下,使用不同的名称。将这些步骤分开的目的是什么?
  • 感谢您的关注,我需要生成文件、文件夹的所有副本,但现在重命名每个文件夹时遇到问题,
  • 使用mvrename 完成重命名。如果您在使用这些命令时遇到问题,我建议您就此提出一个具体问题。

标签: linux bash ubuntu copy-paste mkdir


【解决方案1】:

您的要求不是很清楚。我会用一些假设来回答。

对于每个名为 file_i 的文件,假设您要在这些文件的同一路径下为该文件创建一个名为 file_i_folder 的目录。您可以通过以下命令执行此操作:

ls | xargs -t -n1 -i mkdir {}_folder 

然后你想在它们对应的目录下创建每个文件的副本。由于文件名不能重复,您可能需要为副本提供前缀,例如copy1_file1。您可以通过以下命令执行此操作:

ls -p | grep -v / | xargs -t -n1 -i bash -c 'for i in {1..50}; do cp {} "{}_folder/copy${i}_{}" ; done'

您可以随意更改命令以更改文件和目录名称的格式。

【讨论】:

  • 谢谢你,我现在就证明这一点
  • 完美运行
  • @SdtElectronics :我认为避免使用ls 并改为使用foreach file in * 会更安全。当然,您会在循环中测试file 是否真的指的是一个普通文件。
  • @StdElectronics,我一直在尝试这个解决方案,但是请注意文件扩展名添加到文件夹的名称中,在这种情况下是.csv,如何自定义创建的文件夹的名称?,确实需要在我原来的问题中添加更多数据
猜你喜欢
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
相关资源
最近更新 更多