![Bash 脚本创建带有内容名称检查的目录?](https://linux22.com/image/126782/Bash%20%E8%84%9A%E6%9C%AC%E5%88%9B%E5%BB%BA%E5%B8%A6%E6%9C%89%E5%86%85%E5%AE%B9%E5%90%8D%E7%A7%B0%E6%A3%80%E6%9F%A5%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%9F%20.png)
如何创建两个目录,其中包含某个文件,并在它们之间复制文件?
如果这些文件具有相同的名称,则应抛出错误。
答案1
有错误通知:
mkdir test1 test2
for i in `ls test1/`; do
if [ ! -e "test2/$i" ] ; then cp "test1/$i" test2/
else echo "ERROR: test2/$i already exists" >&2
fi
done
for i in `ls test2/`; do
if [ ! -e "test1/$i" ] ; then cp "test2/$i" test1/
else echo "ERROR: test1/$i already exists" >&2
fi
done
答案2
没有错误通知:
mkdir test1 test2
cp --no-clobber test1/* test2/
cp --no-clobber test2/* test1/
答案3
从两个目录中获取文件列表并将其保存在 2 个文件中
目录1_文件.txt,目录2_文件.txt。
假设您需要将文件从 Directory1 复制到 Directory2。它应该只复制目录 1 中不存在于目录 2 中的文件
find First_directory_path -maxdepth 1 -type f | awk -F "/" '{print $NF}' > Directory1_files.txt
find Second_directory_path -maxdepth 1 -type f | awk -F "/" '{print $NF}' > Directory2_files.txt
awk 'NR==FNR {a[$1];next}!($1 in a) {print $1}' Directory2_files.txt Directory1_files.txt >Files_need_to_copy_to_directory_2
awk '{print "cp" " " "directory1path/"$1 " " "directory2path"}' Files_need_to_copy_to_directory_2| sh