Batalkan file ke direktori tujuan berdasarkan nama file tar

2

Saya memiliki file tar yang bernama _home_rock_files.tartar di server sumber dan sekarang setelah saya menyalin tar ini ke server tujuan saya memiliki struktur direktori yang sama _home_rock_files. Sekarang, pertanyaan saya muncul di sini.

Saya ingin menulis skrip shell yang secara otomatis membuka _home_rock_files.tardan menguraikan arsip untuk /home/rock/files/; jalur tujuan ditentukan dalam nama file seperti ini.

shekhar
sumber
sebenarnya _ tidak lain adalah /. Di sinilah script shell saya akan tahu ini harus di-untar di / home / rock / files /. I cant hardcode path semua adalah _home_rock_files.tar adalah petunjuk untuk folder tujuan untar, tar -xvf _home_rock_files.tar -C / home / rock / file bagaimana ini dapat dicapai.
shekhar
maksud Anda, Anda memiliki beberapa file, dan jika file itu dipanggil _home_rock_filesharus untar ke /home/rock/filesdan jika itu disebut _hi_there_zannaitu harus untar ke /hi/there/zanna?
Zanna
ya Anda mendapatkannya .. ini bukan file ini direktori ...
shekhar
Oh benar! Pertanyaan bagus, +1. Saya sedikit mengedit.
Zanna

Jawaban:

2

Saya datang dengan serangkaian perintah bash ini:

[sudo] find * -type f -name "SPECIFY THE FILE NAME"| 
    while read FILE ; do       # read the files
        destpath="$(echo "$FILE"| sed 's/_/\//g;s/.tar//')"; #rerplace all _s with /s and drop the .tar ext to achive destpath
        mkdir -p "$destpath";  #create the directory path of despath  
        tar xzf "$FILE" -C "$destpath" ;  #untar the file to destpath
    done
αғsнιη
sumber
hebat saya akan menyesuaikan sesuai dengan kebutuhan saya seperti di solaris -C akan merusak saya harus melalui itu ....
shekhar
Awalnya saya menguji pada kotak Ubuntu sekarang sama harus dibuang di kotak solaris ...
shekhar