英文:
Bash foor loop change the directory from one location to anther location
问题
这是我的目录树。每个目录 A、B、C 都包含与用户名对应的特定 user.txt 文件。
现在我想切换到每个目录 A、B、C,并需要将 usera.txt、userb.txt、userc.txt 分别压缩到相应的文件夹中,并在取得压缩文件后从目录中删除源文件(.txt 文件)。
我可以看到上面的脚本不是一个可重用的代码,并且也存在重复的循环。你能指导我如何以更好的方式处理吗?
注意:如果可能的话,我们也可以递归地压缩每个目录和文件,就像下面这样。
英文:
Here the my directory Tree. Each directory A, B, C contains specific user.txt file respective to the user name.
Now I want to switch to each directory A, B, C and need to zip only usera.txt, userb.txt, userc.txt into the respective folder and delete the source file (.txt file) from the directory after taking zip file.
┌──(root㉿DESKTOP-1OOLTMI)-[/home/gowmi]
└─# tree
.
├── UserA
│   └── usera.txt
├── UserB
│   └── userb.txt
└── UserC
└── userc.txt
4 directories, 3 files
my for loop
PATH1=/home/gowmi/UserA/*
for file in $PATH1*;
do
zip ${file%.*}.zip $file -mT .;
done
PATH2=/home/gowmi/UserB/*
for file in $PATH2*;
do
zip ${file%.*}.zip $file -mT .;
done
PATH3=/home/gowmi/UserC/*
for file in $PATH3*;
do
zip ${file%.*}.zip $file -mT .;
done
I can see above script is not a reusable and i can see we have code duplication as well for repeating the for loop. Can you please some guide me how i can make it better way.
NOTE: and also if its possible we can take recursively zip file each directory and file as well. like below.
答案1
得分: 1
循环可以嵌套。
第一步将是:
for path in /home/gowmi/UserA /home/gowmi/UserB /home/gowmi/UserC ; do
for file in $path/* ; do
zip ${file%.*}.zip $file -mT .;
done
done
当您有更多用户时,您可以:
for path in /home/gowmi/User* ; do
英文:
Loops can nest.
The first step would be:
for path in /home/gowmi/UserA /home/gowmi/UserB /home/gowmi/UserC ; do
for file in $path/* ; do
zip ${file%.*}.zip $file -mT .;
done
done
When you get more users, you can:
for path in /home/gowmi/User* ; do
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论