Solved

Need a script to traverse my files check for tabs replace tabs with spaces!!

Posted on 2008-10-16
3
666 Views
Last Modified: 2013-12-26
Hi all

What do I do to get list of files that have tabs? How to do substitute the tabs with spaces?
Is there a way to do that in a perl script that traverse the directory structure and replace tabs with spaces?


my project has so many files it would be time consuming to do one by one!


Thanks
in advance!
0
Comment
Question by:EmadGirgis
3 Comments
 
LVL 6

Accepted Solution

by:
RSLE earned 200 total points
ID: 22733320

#!/usr/bin/perl
 

$dir = "path";
 

use File::Find;

find(sub{push(@files, $File::Find::name) unless -d}, $dir);
 

foreach $file (@files) {

        open(FILE, $file);

        foreach $line (<FILE>) { push(@file, $line); }

        close(FILE);
 

        $data = join("", @file);

        @file = ();
 

        $data =~ s/\t/ /g;

        open(FILE, "> $file");

        print FILE $data;

        close(FILE);

}

Open in new window

0
 
LVL 39

Assisted Solution

by:Adam314
Adam314 earned 150 total points
ID: 22733482
From a prompt, change to the directory you want to start, then enter this:

If you don't want a backup, remove the .bak part
#Create a backup with extension .bak

find . -type f -exec perl -i.bak -pe 's/\t/ /g' \{\} \;
 

#Don't create a backup

find . -type f -exec perl -i -pe 's/\t/ /g' \{\} \;

Open in new window

0
 
LVL 2

Assisted Solution

by:tdiops
tdiops earned 150 total points
ID: 22733641
Here's a sed version:
# find all files from here (.)

# copy filename to hold space

# substitute tabs to spaces

# if there was no substitution go on to the next file

# otherwise append the hold space to the pattern space

# generate the mv command

# execute and display it

find . -type f \

| sed -n '

 h

 s/[\t]/ /g

 T

 G

 s|\(.*\)\n\(.*\)|mv "\2" "\1"|p

' \

| sh -sx

Open in new window

0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Many time we need to work with multiple files all together. If its windows system then we can use some GUI based editor to accomplish our task. But what if you are on putty or have only CLI(Command Line Interface) as an option to  edit your files. I…
Utilizing an array to gracefully append to a list of EmailAddresses
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now