Welcome, Guest. Please login or register.
+  Linux Soft Forum
|-+  Cercetează» Īntrebări de bază» rename files
[Picture 161] [Picture 160] [Picture 159]
Username:
Password:
 
Pages: [1] 2   Go Down
  Print  
Author Topic: rename files  (Read 4164 times)
0 Members and 1 Guest are viewing this topic.
ioask4it
Membru
*

« on: March 21, 2009, 11:37:03 AM »

doresc sa redenumesc fisierele de ieri, adaugand in fata numelui data fisierului

find /test -name "pattern" -type f -mtime 0 -exec Huh???
si aici apare problema

deci daca am fisierul a.txt din data de 20 martie sa fie sub forma
03-20-a.txt

Multumesc
Logged
gheorghe
Veteran
**


« Reply #1 on: March 21, 2009, 12:15:02 PM »

Do your own homework Scoate limba
Logged
ioask4it
Membru
*

« Reply #2 on: March 21, 2009, 12:57:43 PM »

facui dar mai departe de

find /mnt/videos -name "Jurnal*.mpg" -type f -mtime 0 | \
awk '\
{
cate = split($0, caleSplit, "/")
fisier = caleSplit[cate]
cale = substr($0, 0, index($0, fisier) - 1)

print "fisierul=" fisier " are calea=" cale
}'

nu reusii
Logged
gheorghe
Veteran
**


« Reply #3 on: March 21, 2009, 01:21:12 PM »

Vezi exemplele astea: http://en.wikipedia.org/wiki/Xargs

N-am vazut nimic asemanator cu ce ai tu, dar cred ca xargs e mai ok, pentru ca poate sa lucreze corect cu fisiere cu spatii in nume. Si anume asa:

find /path -type f -print0 | xargs -0 etc etc

Logged
ioask4it
Membru
*

« Reply #4 on: March 21, 2009, 04:48:34 PM »

cred ca mai bine awk si la el, apelez mai departe system(mv...)
multam
Logged
ioask4it
Membru
*

« Reply #5 on: March 21, 2009, 07:28:48 PM »

find /mnt/videos -name "Jurnal*.mpg" -type f -mtime 0 | \
awk '{
    print "processing " $0
    splitnr = split($0, splitrez, "/")
    filename = splitrez[splitnr]
    path = substr($0, 1, index($0, filename) - 1)
    print "filename=" filename
    print "path=" path
    print "cp " $0 " /videos/" filename

}'

dar am o problema
daca filename are spatii imi va da eroare, pentru asta trebuie sa il bag intre " DAR nu reusesc!!!!
Logged
~Empathy~
Veteran
**

Decadence is Bliss...


« Reply #6 on: March 21, 2009, 08:10:00 PM »

Ți-a zis gheorghe mă ce trebuie să faci...
Logged

ioask4it
Membru
*

« Reply #7 on: March 21, 2009, 10:08:34 PM »

am aflat de unul singur, dar mai am ceva de imbunatatit
iar scriptingul.... pur si simplu nu am folosit pana acuma
defapt am dorit sa renunt la programul in java in detrimentul comenzilor native
Logged
gheorghe
Veteran
**


« Reply #8 on: March 22, 2009, 02:31:34 AM »

Sunt sigur ca dupa ce o sa te dea afara, cel care va trebui sa mentina programul o sa te iubeasca.
Logged
ioask4it
Membru
*

« Reply #9 on: March 22, 2009, 11:15:47 AM »

pai daca nu stiu scripting trebuia sa ma adaptez nu?
Dar uite ca am invatat!!! (Cat imi este necesar)
#!/bin/sh
# copy_files.sh

echo "Copy files"
for file in `find /mnt/videos -name "pattern" -mtime 0`; do
    if [[ -e $file ]]; then
   timestamp=`ls -l --time-style=+%Y-%M-%d $file | cut -d' ' -f6`
   path=`echo $file | awk '{
      splitnr = split($0, path, "/")
      print substr($0, 1, index($0, path[splitnr]) - 1)
      }'`
   file=`echo $file | awk '{
      splitnr = split($0, path, "/")
      print path[splitnr];
      }'`
   newfile=`echo $timestamp\_$file`
   cp -v /mnt/videos/$file /videos/$newfile
    fi
done;   

Trebuie doar sa mai rezolv problema spatiilor din numele fisierelor
Logged
~Empathy~
Veteran
**

Decadence is Bliss...


« Reply #10 on: March 22, 2009, 11:52:54 AM »

Tot nu vrei să citești despre xargs ăla...
Logged

ioask4it
Membru
*

« Reply #11 on: March 22, 2009, 01:16:22 PM »

#!/bin/sh
# copy_files.sh
echo "Copy files"
find /mnt/videos -type f -name "Jurnal*.mpg" -mtime 0 -print0 |
    while read -d $'\0' file
   do
       timestamp=`ls -l --time-style=+%Y-%M-%d "$file" | cut -d' ' -f6`
        path=`echo $file | awk '{
       splitnr = split($0, path, "/")
           print substr($0, 1, index($0, path[splitnr]) - 1)
        }'`
   file=`echo $file | awk '{
        splitnr = split($0, path, "/")
        print path[splitnr];
    }'`
   newfile=`echo $timestamp\ $file`
   cp -v "/mnt/videos/$file" "/videos/$newfile"
 done;   


pai din pacate nu reusii sa-l folosesc.
Ma blocai cand il folosii, dar uite ca ajunsai la alta varianta care nu are bug-uri la spatii.
Daca doriti, puneti voi o varianta cu xargs
Logged
~Empathy~
Veteran
**

Decadence is Bliss...


« Reply #12 on: March 22, 2009, 05:00:13 PM »

find . -type f -print0 | xargs -0 -Iarg echo arg | sed -e 's/.\///' | tr "\n" "\0" | xargs -0 -Iarg mv arg `date "+%Y%m%d%H%M%S"`\ -\ arg
Logged

ioask4it
Membru
*

« Reply #13 on: March 22, 2009, 06:47:27 PM »

dap, si nu are buguri gen pauze sau \
Multumesc mult & scuze de deranj
Logged
oblio
Admini
**


WWW
« Reply #14 on: March 22, 2009, 07:02:07 PM »

Cred ca poti sa bagi in sed-ul ala si tr-ul, merg mai multe operatii la aceeasi rulare.
Logged

Distribuţie: ubuntu | Localitate: Bucureşti | Vārstă: 24

Oh! Everything has a point, and if it doesn't, then there's a point to it.

Oblio's
Pages: [1] 2   Go Up
  Print  
 
Jump to: