我有一个名为home/homeLife
我有一个名为 home1 home2 和 home3 的文件存储在 /home 中
我想将所有以 开头的文件home*
移至home/homeLife/.
.
我输入了
mv home* /home/homeLife
cannot move homeLife into subdirectory of itself
我的问题:如何排除目录?
答案1
使用zsh
glob 限定符:
mv home*(.) dst
仅移动常规的文件。
尽管
mv home*(^/) dst
移动任何类型的文件除了目录。
mv home*(^-/) dst
还将排除目录的符号链接。
答案2
您可以使用查找。以下应该有效。
find . -name home\* -type f -maxdepth 1 -exec mv {} /home/homeLife/. \;
答案3
您可以使用 bash 扩展 glob:
shopt -s extglob ## activate extglogs if not yet done
mv home!(*Life) homeLife/ ## !(p1|...) = anything except one of the patt
答案4
您可以方便地修剪您的全局匹配列表:
set --; cd /home
for f in ./home*
do [ ! -L "$f" ] &&
[ -f "$f" ] &&
set "$@" "$f"
done
[ "$#" -eq 0 ] || mv "$@" ./homeLife