我想在不同的文件夹中复制两个不同的文件

2024-04-18 17:59:13 发布

您现在位置:Python中文网/ 问答频道 /正文

例如。 我有sam1_1.gz sam2_1.gz sam3_1.gz..200个,我有相应的文件夹sam1,sam2 sam3。我想将sam1.gz复制到/home/users/sam1,将sam2.gz复制到/home/users/sam2等等。我想包括他们的路径以及


2条回答

创建文件:

for i in {1..200}; do touch $i.gz; done

然后运行:

#!/bin/bash

for filename in *.gz; do
  file="${filename%.*}"
  mkdir $file
  mv $filename ./$file
done

这将提取不带扩展名的文件名-生成目录并移动文件

编辑: 根据你的评论,我不知道你做错了什么:

[vagrant@Tools-18 zips]$ touch sam1_1.gz
[vagrant@Tools-18 zips]$ touch sam1_2.gz
[vagrant@Tools-18 zips]$ touch sam2_2.gz
[vagrant@Tools-18 zips]$ touch sam2_1.gz
[vagrant@Tools-18 zips]$ bash 1.sh
[vagrant@Tools-18 zips]$ ls -lrth
total 4.0K
-rw-rw-r . 1 vagrant vagrant 104 Feb  7 16:05 1.sh
drwxrwxr-x. 2 vagrant vagrant  23 Feb  7 16:30 sam1_1
drwxrwxr-x. 2 vagrant vagrant  23 Feb  7 16:30 sam1_2
drwxrwxr-x. 2 vagrant vagrant  23 Feb  7 16:30 sam2_1
drwxrwxr-x. 2 vagrant vagrant  23 Feb  7 16:30 sam2_2
[vagrant@Tools-18 zips]$ ls ./sam2_2/
sam2_2.gz

定稿2:

[vagrant@Tools-18 script]$ cat 1.sh
#!/bin/bash

zipdir=/home/vagrant/zips
move_to_dir=/home/vagrant/new_directory
cd $zipdir
for filename in *.gz; do
  file="${filename%.*}"
  echo "making directory: $move_to_dir/$file"
  mkdir -p $move_to_dir/$file
  echo "moving $filename to $move_to_dir/$file/"
  mv $filename $move_to_dir/$file/
done
[vagrant@Tools-18 script]$ ls /home/vagrant/zips
sam100_1.gz  sam115_1.gz  sam130_1.gz  sam145_1.gz  sam161_1.gz  sam176_1.gz  sam19_1.gz   sam26_1.gz  sam4_1.gz   sam57_1.gz  sam72_1.gz  sam88_1.gz
sam101_1.gz  sam116_1.gz  sam131_1.gz  sam146_1.gz  sam16_1.gz   sam177_1.gz  sam192_1.gz  sam27_1.gz  sam42_1.gz  sam58_1.gz  sam73_1.gz  sam89_1.gz
sam10_1.gz   sam117_1.gz  sam13_1.gz   sam147_1.gz  sam162_1.gz  sam178_1.gz  sam193_1.gz  sam28_1.gz  sam43_1.gz  sam59_1.gz  sam74_1.gz  sam90_1.gz
sam102_1.gz  sam118_1.gz  sam132_1.gz  sam148_1.gz  sam163_1.gz  sam179_1.gz  sam194_1.gz  sam29_1.gz  sam44_1.gz  sam60_1.gz  sam75_1.gz  sam91_1.gz
sam103_1.gz  sam119_1.gz  sam133_1.gz  sam149_1.gz  sam164_1.gz  sam180_1.gz  sam195_1.gz  sam30_1.gz  sam45_1.gz  sam61_1.gz  sam76_1.gz  sam9_1.gz
sam104_1.gz  sam1_1.gz    sam134_1.gz  sam150_1.gz  sam165_1.gz  sam181_1.gz  sam196_1.gz  sam31_1.gz  sam46_1.gz  sam6_1.gz   sam77_1.gz  sam92_1.gz
sam105_1.gz  sam120_1.gz  sam135_1.gz  sam151_1.gz  sam166_1.gz  sam18_1.gz   sam197_1.gz  sam3_1.gz   sam47_1.gz  sam62_1.gz  sam78_1.gz  sam93_1.gz
sam106_1.gz  sam121_1.gz  sam136_1.gz  sam15_1.gz   sam167_1.gz  sam182_1.gz  sam198_1.gz  sam32_1.gz  sam48_1.gz  sam63_1.gz  sam79_1.gz  sam94_1.gz
sam107_1.gz  sam12_1.gz   sam137_1.gz  sam152_1.gz  sam168_1.gz  sam183_1.gz  sam199_1.gz  sam33_1.gz  sam49_1.gz  sam64_1.gz  sam80_1.gz  sam95_1.gz
sam108_1.gz  sam122_1.gz  sam138_1.gz  sam153_1.gz  sam169_1.gz  sam184_1.gz  sam200_1.gz  sam34_1.gz  sam50_1.gz  sam65_1.gz  sam81_1.gz  sam96_1.gz
sam109_1.gz  sam123_1.gz  sam139_1.gz  sam154_1.gz  sam170_1.gz  sam185_1.gz  sam20_1.gz   sam35_1.gz  sam51_1.gz  sam66_1.gz  sam8_1.gz   sam97_1.gz
sam110_1.gz  sam124_1.gz  sam140_1.gz  sam155_1.gz  sam171_1.gz  sam186_1.gz  sam21_1.gz   sam36_1.gz  sam5_1.gz   sam67_1.gz  sam82_1.gz  sam98_1.gz
sam111_1.gz  sam125_1.gz  sam141_1.gz  sam156_1.gz  sam17_1.gz   sam187_1.gz  sam2_1.gz    sam37_1.gz  sam52_1.gz  sam68_1.gz  sam83_1.gz  sam99_1.gz
sam11_1.gz   sam126_1.gz  sam14_1.gz   sam157_1.gz  sam172_1.gz  sam188_1.gz  sam22_1.gz   sam38_1.gz  sam53_1.gz  sam69_1.gz  sam84_1.gz
sam112_1.gz  sam127_1.gz  sam142_1.gz  sam158_1.gz  sam173_1.gz  sam189_1.gz  sam23_1.gz   sam39_1.gz  sam54_1.gz  sam70_1.gz  sam85_1.gz
sam113_1.gz  sam128_1.gz  sam143_1.gz  sam159_1.gz  sam174_1.gz  sam190_1.gz  sam24_1.gz   sam40_1.gz  sam55_1.gz  sam71_1.gz  sam86_1.gz
sam114_1.gz  sam129_1.gz  sam144_1.gz  sam160_1.gz  sam175_1.gz  sam191_1.gz  sam25_1.gz   sam41_1.gz  sam56_1.gz  sam7_1.gz   sam87_1.gz
[vagrant@Tools-18 script]$ ls /home/vagrant/new_directory
lsmaking directory: /home/vagrant/new_directory/sam99_1
moving sam99_1.gz to /home/vagrant/new_directory/sam99_1/
[vagrant@Tools-18 script]$ ls /home/vagrant/new_directory/sam99_1/
sam99_1.gz
[vagrant@Tools-18 script]$
: cannot access /home/vagrant/new_directory: No such file or directory
[vagrant@Tools-18 script]$ bash 1.sh
making directory: /home/vagrant/new_directory/sam100_1
moving sam100_1.gz to /home/vagrant/new_directory/sam100_1/
...
making directory: /home/vagrant/new_directory/sam99_1
moving sam99_1.gz to /home/vagrant/new_directory/sam99_1/
[vagrant@Tools-18 script]$ ls /home/vagrant/new_directory/sam99_1/
sam99_1.gz
import shutil
root, folders, files = next(os.walk('.'))
for file in files:
    if file.endswith('.gz'):
        src=os.path.join(root, file)
        dst=os.path.join(root, file[:-3], file)
        try:
            shutil.copy(
                src=src,
                dst=dst
            )
        except FileNotFoundError:
            print(f"Could not copy {src} to {dst}: folder {os.path.join(root, file[:-3])} missing.")

相关问题 更多 >