如何在 Unix 中只移动文件

21 linux unix file-management find mv

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

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

小智 35

你可以试试

find . -maxdepth 1 -type f -exec mv {} destination_path \;
Run Code Online (Sandbox Code Playgroud)

  • 哇,一个知道如何使用 find 的人。为了完整起见,您应该在查找中使用 -name [^.]\* ,即 --- find 。-maxdepth 1 -type f -name [^.]\* -exec mv {} path \; (2认同)

tea*_*144 6

@Mereghost 非常接近。这是我移动所有文件(包括隐藏文件)但不移动目录的方法:

find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
Run Code Online (Sandbox Code Playgroud)

.查找假设您当前目录是要移动的文件的源。如果不是,可以修改命令,如下:

find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
Run Code Online (Sandbox Code Playgroud)

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

find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
Run Code Online (Sandbox Code Playgroud)

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

find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
Run Code Online (Sandbox Code Playgroud)


chr*_*ris 4

我是一个“凡事都用锤子”的人,所以我使用 bourne shell 程序来处理其他人使用外部程序......

for file in * .* 
do
  test -f "$file" && mv "$file" "$HOME"/
done
Run Code Online (Sandbox Code Playgroud)

有些人喜欢用尽可能少的打字来完成工作,但我打字速度很快,而且我的大脑中已经内置了这样的东西,所以这样做而不是查找确切的内容并不会太痛苦。 find 和 exec 的参数等等。

YMMV,不过...

  • Shorty:这是一个很好的答案,除了 mv 命令之外,您还必须使用其他命令(至少是 shell)。这是无需编程即可实现的基础知识。 (2认同)