/tmp/test$ ls
dir1 dir2 dirM
/tmp/test$ mv * dirM/
mv: cannot move `dirM' to a subdirectory of itself, `dirM/dirM'
有没有办法使用 shell 脚本将所有内容(dirM 除外)移动到 dirM?
最佳答案
您没有说明您使用的是什么 shell。在符合 POSIX 的 sh
中,您可以遍历目录的内容,跳过 dirM
:
for d in ./*/; do
[ ! -d "$d" ] || [ "$d" -eq "./dirM/" ] && continue
mv "$d" dirM
done
在 bash
中,您可以使用扩展模式来匹配除 dirM
之外的所有内容:
shopt -s extglob nullglob
for d in !(dirM)/; do
mv "$d" dirM
done
无论哪种情况,如果您只是想隐藏错误,请使用
mv * dirM 2> /dev/null
不推荐这样做,因为它会丢弃任何可能发生的错误。
关于linux - 在 Shell 中,如何将目录的内容移动到同一级别的另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487010/