如何选择文件夹中的所有文件(排除所有目录)?

时间:2014-04-20 07:14:14

标签: bash

假设我有一个包含许多文件和目录的文件夹(不是实际的文件名,这就像垃圾桶目录,因此文件名完全是随机的,有些文件没有扩展名):

dir1/
dir2/
...
dirN/
file1
file2
...
fileM

现在我需要将此目录中的所有文件移动到dir1/。也就是说,将file1file2 ... fileM移至dir1/。最简单的方法是什么?

如果它们都是带扩展名的文件,则问题很简单,只有mv *.* dir1/。但是如果有没有扩展名的文件,我不知道该怎么办。

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

虽然find是一个很好的解决方案,但这是另一种仅使用bash的解决方案:

for file in *; do [[ -f $file ]] && mv "$file" dir1; done

答案 2 :(得分:0)

Bash没有直接选择常规文件的方法。您必须使用find

也许zsh也适合您。使用zsh,您只需编写

即可
mv *(.) dir1/

答案 3 :(得分:-2)

一种方式:

mv $(find * -maxdepth 0 -type f) dir1

另:

for file in *; do
if [ -f "$file" ]
then mv "$file" dir1
fi
done