如何将除一个文件和目录之外的所有文件和目录从本地驱动器复制到 HDFS?

How to copy all files and directories except one from local drive to HDFS?

我有一个目录 /home/my_directory/,其中包含以下文件和子目录:

anotherTest.txt  doNotCopy.txt   my_subdirectory/   subdirectory2/   test.txt      

如何复制 HDFS 上除 doNotCopy.txt 文件以外的所有文件和目录?

--copyFromLocal 没有提供排除特定文件的方法。您可以执行以下操作:

ls /home/my_directory | grep -v 'doNotCopy.txt' | while read -r fileName ; do 
    eval "hdfs dfs -copyFromLocal -f $fileName /path/to/HDFS/" 
done

现在,如果您 ls 您的 /path/to/HDFS/ 您应该在其中获得所需的文件:

hdfs dfs -ls -C /path/to/HDFS/

anotherTest.txt   my_subdirectory/   subdirectory2/   test.txt 

如果要排除多个文件或目录

ls /home/my_directory | grep -v 'doNotCopy.txt\|dirDoNotCopy\|anotherTextFile.txt' | while read -r fileName ; do 
    eval "hdfs dfs -copyFromLocal -f $fileName /path/to/HDFS/" 
done