2017-01-17 4 views
0

他のディレクトリに(再帰的に)ディレクトリ内のすべてのファイルのシンボリックリンクを作成します。私はフォルダ内のファイルを持っている

folder_a/ 
    subfolder_1/ 
    file.txt 
    subfolder_2/ 
    subfolder_3 
     file2.txt 
    file3.txt 

私はfolder_bに、ファイルを.txtにシンボリックリンクを取得する必要があります:

folder_b/ 
    000_file.txt ---> folder_a/subfolder_1/file.txt 
    001_file2.txt ---> folder_a/subfolder_2/subfolder_3/file2.txt 
    003_file3.txt ---> folder_a/file3.txt 

答えて

0

ことができますbashで

src = '/path/to/folder_a/' 
dst = '/path/to/folder_b/' 

files = `find $(realpath #{src}) -type f -iname "*.txt"`.split("\n") 
files.each_with_index do |path, idx| 
    name = File.basename path 
    `ln -s "#{path}" "#{dst + "%03d" % idx}__#{name}"` 
end 
1

Rubyスクリプトでこれを行います

. 
├── folder_a 
│   ├── file3.txt 
│   ├── subfolder_1 
│   │   └── file.txt 
│   └── subfolder_2 
│    └── subfolder_3 
│     └── file2.txt 
└── folder_b 
    ├── 000_file.txt -> folder_a/subfolder_1/file.txt 
    ├── 002_file2.txt -> folder_a/subfolder_2/subfolder_3/file2.txt 
    └── 003_file3.txt -> folder_a/file3.txt 
もたらす210
shopt -s globstar     # Enable **/* glob 

for fname in folder_a/**/*.txt; do # Get all .txt in folder_a 
    bname=${fname##*/}    # Basename of link target 

    # Assemble link name 
    printf -v lname '%s%03d%s' 'folder_b/' "${bname//[!0-9]}" "_$bname" 

    # Create link 
    ln -s "$fname" "$lname" 
done 

関連する問題