如何在 Unix 中仅移动文件

如何在 Unix 中仅移动文件

如何使用命令将普通文件(而不是目录)从 Linux 中的一个文件夹移动到另一个文件夹mv

我已尝试过mv * ~/,但它复制了所有内容,包括目录。

答案1

你可以试试

find . -maxdepth 1 -type f -exec mv {} destination_path \;

答案2

@Mereghost 非常接近。以下是我移动所有文件(包括隐藏文件)但不移动目录时得到的结果:

find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;

find之后.的命令假设当前目录是要移动的文件的来源。如果不是,可以修改命令,如下所示:

find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;

如果您只想移动常规文件而不移动隐藏文件:

find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;

如果您只想移动隐藏文件而不移动常规文件:

find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;

答案3

我是一个“用锤子做所有事情”的人,所以我使用 Bourne shell 程序来做别人使用外部程序来做的事情......

for file in * .* 
do
  test -f "$file" && mv "$file" "$HOME"/
done

有些人喜欢用尽可能少的打字来完成工作,但我打字很快,而且我脑子里已经有了这样的东西,所以这样做并不太麻烦,而不需要查找 find 和 exec 等的确切参数。

不过,YMMV(年龄差异)...

答案4

这可能被认为是不好的做法/危险,在这种情况下请评论!但是

cp * ~; rm *

cp因为和的默认行为rm都是忽略目录,所以它应该具有预期的效果。

相关内容