【问题标题】:create a directory for every file and generate “n” copies for each file为每个文件创建一个目录并为每个文件生成“n”个副本
【发布时间】:2021-03-26 18:56:03
【问题描述】:

当我为我的文件寻找解决方案时,我发现了一些完美的东西,我在此处提供了答案:https://unix.stackexchange.com/questions/219991/how-do-i-create-a-directory-for-every-file-in-a-parent-directory/220026#220026?newreg=94b9d49a964a4cd1a14ef2d8f6150bf8

但是现在,我的问题是如何生成 50 个副本到我正在处理以下命令行的每个文件生成的目录

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

获取以下信息

-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

我怎样才能将这个与之前的答案相匹配??,包括那个答案的功能代码

cd ParentFolder
for x in ./*.csv; do
  mkdir "${x%.*}" && mv "$x" "${x%.*}"

done

所有的功劳都归功于产生这个出色答案的人,并提前感谢大家

【问题讨论】:

    标签: bash file directory copy


    【解决方案1】:

    我已经做了一些测试,我可以发布以下部分工作的代码,因为它在生成的文件夹中有效地复制每个文件 50 次,但每个新文件的名称为“复制”,并且还添加了扩展名 . csv,但如果有人可以提供解决方案来解决这个问题,那就太好了,我感谢@Raman Sailopal 的帮助和 cmets

    代码

    cd pruebas
    for x in ./*.csv; do
        mkdir "${x%.*}" 
        for ((i=1;i<=50;i++)); do # Create a loop, looping 50 times
        cp "$x" "${x%.*}/copy_$x_$i.csv" # use i in the copy command
        #rm -f "$x" # Remove the file after the 50 copies
        done
    done
    

    【讨论】:

      【解决方案2】:

      将move替换为复制/删除并添加for循环:

      cd ParentFolder
      for x in ./*.csv; do
        mkdir "${x%.*}"
        for (( i=1;i<=50;i++ )); do # Create a loop, looping 50 times
           cp "$x" "${x%.*}/copy$i_$x" # use i in the copy command
           rm -f "$x" # Remove the file after the 50 copies
        done
      done
      

      【讨论】:

      • 我已经尝试过这个解决方案,但显然它没有按预期工作,但我非常感谢您的关注
      • 有什么问题?
      • 其实我刚刚发现并修改了。我没有将目录放在复制命令的目标位置。
      • 我明白,但我认为它在生成副本时会删除所有副本,或者一开始就不生成它们,但我不知道可能是我的版本bash,我用的是 4.3.48 版
      • 不应该。 $x 是初始文件 ${x%.*} 目录和 $i 副本号。 rm -f $x 将仅删除初始文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多