Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为每个文件创建一个目录并生成“;n”;每个文件的副本_Bash_File_Directory_Copy - Fatal编程技术网

Bash 为每个文件创建一个目录并生成“;n”;每个文件的副本

Bash 为每个文件创建一个目录并生成“;n”;每个文件的副本,bash,file,directory,copy,Bash,File,Directory,Copy,当我为我的文件寻找解决方案时,我发现了一些完美的解决方案,我在这里给出了答案: 但是现在,我的问题是如何生成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---->1

当我为我的文件寻找解决方案时,我发现了一些完美的解决方案,我在这里给出了答案:

但是现在,我的问题是如何生成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

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

将移动替换为复制/删除,并添加一个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
cd父文件夹
对于x英寸/*.csv;做
mkdir“${x%.*}”

对于((i=1;i我已经做了一些测试,我可以发布以下部分有效的代码,因为它在生成的文件夹中有效地复制了每个文件50次,但名称为“copy”在每个新文件中添加扩展名.csv,但如果有人能提供解决方案,那就太好了,我感谢@Raman Sailopal的帮助和评论

代码

cd-pruebas
对于x in./*.csv;do
mkdir“${x%.*}”

为了((i=1;我已经尝试过这个解决方案,但显然它没有像预期的那样工作,但是我非常感谢您的关注。问题是什么?实际上我刚刚发现并修改了。我没有将目录放在copy命令的目标中。我理解,但我认为当它生成副本时,它会删除所有副本,或者它在开始时不会生成它们,但我不知道它是否是我的bash版本,我使用的是版本4.3.48,它不应该这样做。$x是初始文件${x%.}目录,$I是副本号。rm-f$x将只删除初始文件。
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