我在AIX上使用ksh,我的目录结构如下所示。
dir/
subdir1/file1
subdir2/file2
subdir3/file3
我想删除所有子目录subdir1
,subdir2
,依此类推。我想在file1
中保留file2
,dir
等文件。换句话说,我想将subdirs
中的所有文件移动到dir
,然后删除所有空subdirs
。所以最终结果将是:
dir/
file1
file2
file3
....
我应该使用什么命令?
答案 0 :(得分:3)
我只使用适用于任何shell的find
命令:
find ./dir -mindepth 2 -type f -exec mv {} ./dir/ \;
从./dir
开始,找到第一级./dir
以下的文件,然后将这些文件移至./dir
。
要删除空子目录,请使用:
find ./dir -mindepth 1 -type d -empty -delete
警告:如果存在文件名冲突,这将覆盖具有相同名称的文件。
答案 1 :(得分:2)
首先上移文件,然后删除空的子目录;来自dir/
:
mv subdir*/file* ./ && rmdir subdir*/
目录名后的/
表示我们正在处理目录。通过使用?
或[:digit:]
来匹配文件/目录名称,您可以更精确地使用globbing。