我正在尝试创建一个脚本,将文件放置在目录中后移动到子目录中
示例
文件放置在/home/userA/directory1
移动到/home/userA/directory1/directory2
我必须对所有users
以下内容重复此操作,如果不存在则/home
必须跳过该用户。directory2
我的脚本目前为止
#!/bin/bash
directory="/home/*/directory1"
directory2="/home/*/directory1/directory2/."
if [ $(ls -1A $directory | wc -l) -gt 0 ] ;
then
find $directory -type f -exec rsync --remove-source-files {} $directory2 \; &>/dev/null ;
fi
我对上述脚本存在的问题是,它将所有文件移动到其中一个文件中directory2
。
答案1
我假设在某些用户的主目录中存在一个名为的目录d1
,该目录内有一个名为的子目录d2
。
我想你想做类似的事情
#!/bin/bash
for i in /home/*/d1 ; do
if [ -d "$i/d2" ]; then
# echo "$i/d2"
find "$i" -maxdepth 1 -type f -exec mv {} "$i/d2" \;
fi
done
笔记:
- 如果在真实姓名中
d1
有一些空间,您需要做更多的锻炼并用保护它们\
(这样您就可以写for i in /home/*/directory\ with\ spaces; do
)。 - 尝试
echo $directory2 ; exit
用之前的脚本编写,你就会明白为什么它的行为与你的预期不同。更多信息文件名扩展。