我正在做一个打算在任何用户目录上复制的shell脚本。相同的脚本应该能够识别任何用户的目录结构。由于我不知道每个用户的目录结构,因此我无法识别父文件夹以在我的脚本中运行一些命令(脚本中的查找命令)。我非常感谢你的帮助。
正如您在下面的代码中所看到的,我有三种不同类型的路径~/Desktop/input_folder/source.txt
,~/Desktop/output_folder/FILE_${array[$i]}_${array[$((i+1))]}.txt
和../shares/path/FOLDER_WITH_MANY_FILES
。
第三条路径有一条我不知道位置的路线,因此我使用../
告诉脚本假定父文件夹。对于第一条和第二条路线,我使用~/
,因为路线位于/home/username/
。我做得对吗?这些路由是否需要双逗号(" / path / blah")才能被shell读取?我很感激你的帮助。
谢谢!
我的代码:
#!/bin/bash
#source file location
input=$(cat ~/Desktop/input_folder/source.txt )
#read file
IFS=',' read -r -a array <<< "$input"
for((i=0;i<${#array[@]}-1;i+=2));do
#Create the file
touch ~/Desktop/output_folder/FILE_${array[$i]}_${array[$((i+1))]}.txt
echo "Search result for these parameters [${array[$i]},${array[$((i+1))]}]: "$'\r' >> ~/Desktop/output_folder/FILE_${array[$i]}_${array[$((i+1))]}.txt
#Find pattern and save it in file
find ../shares/path/FOLDER_WITH_MANY_FILES -name "*${array[$((i+1))]}*" -exec grep -l "${array[$i]}" {} + | tee -a ~/Desktop/output_folder/FILE_${array[$i]}_${array[$((i+1))]}.txt