我正在使用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
答案 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 = - * /