在linux中将每个文件移动到其父目录中

nwa*_*arp 2 linux bash command-line find

假设我有

dir 1/dir 2/file 1
dir 3/dir 4/file 2
Run Code Online (Sandbox Code Playgroud)

(目录和文件名中的空格是有意的)

我想结束

dir 1/file 1
dir 3/file 2
Run Code Online (Sandbox Code Playgroud)

相关但不完整的答案

此答案将所有文件移动到当前父目录(而不是每个文件的父目录)

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

这个答案打印出每个父目录,但我不确定如何移动。

find . -name '.user.log' | xargs -I{} dirname {}
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 6

find -type f -execdir mv "{}" ../ \;
Run Code Online (Sandbox Code Playgroud)

-execdir-exec,但它的工作在一个目录中的特定文件,所以../部分工作,因为你需要。

要摆脱空的dir2dir4在您的示例中,您需要另一个专门的命令,但主要任务已完成。