在Python上使用rsync --recursive仅显示文件名吗?

时间:2013-06-14 06:53:33

标签: python rsync

我正在使用rsync递归到该目录中的所有文件(包括子目录中的所有文件):

rathi/20090209.02s1.1_sequence.txt
rathi/20090209.02s1.2_sequence.txt
rathi/20090729.02s4.2_sequence.txt.gz
rathi/Homo_sapiens_UCSC_hg19.tar.gz
rathi/SRR002321.fastq.bz2
rathi/SRR002322.fastq.bz2
rathi/SRR002323.fastq.bz2
rathi/SRR002324.fastq
rathi/SRR002324.fastq.bz2
rathi/human_g1k_v37.fasta.gz
rathi/s_1_1_sequence.txt
rathi/s_1_sequence.txt
rathi/tesssssssssssssssssssssssssssssstttttttt.txt
rathi/test_data.tar.gz
rathi/Homo_sapiens
rathi/Homo_sapiens/UCSC
rathi/Homo_sapiens/UCSC/hg19
rathi/Homo_sapiens/UCSC/hg19/Annotation
rathi/Homo_sapiens/UCSC/hg19/Annotation/Archives
rathi/Homo_sapiens/UCSC/hg19/Annotation/Archives/ok.txt

我有一个问题。目录列表如

rathi/Homo_sapiens/UCSC
rathi/Homo_sapiens/UCSC/hg19
rathi/Homo_sapiens/UCSC/hg19/Annotation
rathi/Homo_sapiens/UCSC/hg19/Annotation/Archives 

对我没用。我只想用文件获取路径。这种事情是否可以与rsync一起使用?我正在使用subprocess.call在Python中调用rsync。

所以,我希望我的输出是这样的:

rathi/20090209.02s1.1_sequence.txt
rathi/20090209.02s1.2_sequence.txt
rathi/20090729.02s4.2_sequence.txt.gz
rathi/Homo_sapiens_UCSC_hg19.tar.gz
rathi/SRR002321.fastq.bz2
rathi/SRR002322.fastq.bz2
rathi/SRR002323.fastq.bz2
rathi/SRR002324.fastq
rathi/SRR002324.fastq.bz2
rathi/human_g1k_v37.fasta.gz
rathi/s_1_1_sequence.txt
rathi/s_1_sequence.txt
rathi/tesssssssssssssssssssssssssssssstttttttt.txt
rathi/test_data.tar.gz
rathi/Homo_sapiens/UCSC/hg19/Annotation/Archives/ok.txt

3 个答案:

答案 0 :(得分:0)

如果要跳过目录下的所有内容,可以执行

rsync -avz --exclude '*/' source_directory destination_directory

如果要跳过所有空目录,可以使用

rsync -avz --prune-empty-dirs source_directory destination_directory

但我不清楚你想要达到什么目标。你想跳过目录,但不想删除它们中的文件,你想在哪里同步它们,如果你没有同步目录?或者这只是屏幕上的输出?

如果您只想更改屏幕上的输出,可以通过grep管道,即

rsync -avz source_directory destination_directory | grep "\."

然后,您只会看到带有.的行。请注意,您必须转义.,否则它代表通配符。当然,这假设你的目录名中没有任何点。

答案 1 :(得分:0)

使用os.walk,它将列出所有文件。

import os
for root, dirnames, filenames in os.walk('rathi')
       print filenames

它将列出所有文件名。

答案 2 :(得分:-1)

可以选择--filter帮你吗?

rsync --filter = - * /