How do I select a specific block of text in vim? - linux

These are the contents in my file
-r-xr-xr-x 1 dinesh eng 29072 Aug 26 2004 config.sub
-r-xr-xr-x 1 dinesh eng 38515 Aug 26 2004 config.guess
-r-xr-xr-x 1 dinesh eng 5643 Aug 26 2004 install-sh
-r-xr-xr-x 1 dinesh eng 767 Aug 26 2004 mkinstalldirs
-r-xr-xr-x 1 dinesh eng 6328 Aug 26 2004 missing
-r-xr-xr-- 1 dinesh eng 440 Aug 27 2004 build.sh
-r--r--r-- 1 dinesh eng 975 Apr 2 2015 Makefile.am
-r--r--r-- 1 dinesh eng 1153 Apr 2 2015 configure.ac
-r-xr-xr-- 1 dinesh eng 952 Apr 2 2015 autogen.sh
drwxrwxr-x 4 dinesh eng 4096 Nov 30 2016 Scripts
lrwxrwxrwx 1 dinesh eng 35 Dec 1 2016 ltmain.sh -> /usr/share/libtool/config/ltmain.sh
-rw-rw-r-- 1 dinesh eng 2801 Dec 1 2016 config.h.in
lrwxrwxrwx 1 dinesh eng 32 Dec 1 2016 depcomp -> /usr/share/automake-1.11/depcomp
drwxrwxr-x 7 dinesh eng 4096 Dec 1 2016 install
-rw-rw-r-- 1 dinesh eng 41966 Feb 14 00:30 aclocal.m4
drwxr-xr-x 2 dinesh eng 81 Feb 14 00:30 autom4te.cache
-rwxrwxr-x 1 dinesh eng 606261 Feb 14 00:30 configure
drwxrwxr-x 3 dinesh eng 4096 Feb 14 00:30 bin
drwxrwxr-x 3 dinesh eng 53 Feb 14 00:30 preinstall
drwxrwxr-x 4 dinesh eng 4096 Feb 14 00:30 share
drwxrwxr-x 7 dinesh eng 97 Feb 14 00:30 test
-rw-rw-r-- 1 dinesh eng 26776 Feb 14 00:30 Makefile.in
drwxrwxr-x 9 dinesh eng 4096 Feb 14 00:31 build
-rw-rw-r-- 1 dinesh eng 10 Feb 14 00:35 stamp-h.in
drwxrwxr-x 3 dinesh eng 4096 Feb 23 09:25 conf
drwxrwxr-x 2 dinesh eng 4096 Apr 3 01:34 SCCS
drwxrwxr-x 4 dinesh eng 4096 Apr 3 01:34 doc
drwxrwxr-x 5 dinesh eng 12288 Apr 3 01:48 lib
drwxrwxr-x 3 dinesh eng 4096 Apr 3 01:48 src
drwxrwxr-x 8 dinesh eng 79 Jun 9 02:58 BitKeeper
i want to select and delete all the junk information except for the name of the file in one shot from vim. How can I do it?

With :help :normal and a simple normal mode command:
:%normal! d8W
Which means "on every line in the buffer, delete until the 8th WORD".
With a substitution:
:%s/^\(\S\+\s\+\)\{8}
Which means "substitute every sequence of height groups made of one or more non-whitespace characters followed by one or more white-space characters, starting from the beginning of the line".

Just select the block with Ctrl-v and delete it with d.

Hey VIM support virtual block mode.
In which you have choice of columnar selection of data.
1: Open you file using vim, press Ctrl+v.
2: Select all columns you wanna delete and press d.
3: To save file and exit press :wq

Give the following command:
:1,$s/.* //g

Related

Hidden Files Not Being Copied On Mac with cp -r

Very very weird issue. I have a project that has hidden files on Mac OS 12.2.1, I am try to copy over. For example:
drwxr-xr-x 16 john staff 512 Jun 25 10:35 .
drwxr-xr-x 6 john staff 192 Jun 27 06:50 ..
-rw-r--r--# 1 john staff 6148 Jun 5 13:52 .DS_Store
drwxr-xr-x 14 john staff 448 Jun 26 20:29 .git
-rw-r--r-- 1 john staff 310 Jun 4 09:52 .gitignore
-rw-r--r-- 1 john staff 368 Jun 4 10:15 Dockerfile
-rw-r--r-- 1 john staff 3486 Jun 20 15:29 README.md
drwxr-xr-x 8 john staff 256 Jun 24 16:49 build
-rw-r--r-- 1 john staff 217 Jun 4 10:16 docker-compose.yml
drwxr-xr-x 817 john staff 26144 Jun 25 14:31 node_modules
-rw-r--r-- 1 john staff 1075501 Jun 25 14:31 package-lock.json
-rw-r--r-- 1 john staff 1185 Jun 25 14:31 package.json
-rw-r--r-- 1 john staff 82 Jun 4 10:30 postcss.config.js
drwxr-xr-x 9 john staff 288 Jun 5 14:00 public
drwxr-xr-x 18 john staff 576 Jun 20 13:42 src
-rw-r--r-- 1 john staff 2836 Jun 5 02:36 tailwind.config.js
Now I run the following command
sudo cp -R * ../otherfolder
And I've also tried a variation
cp -r * ../otherfolder
And the following is there:
drwxr-xr-x 13 john staff 416 Jun 27 07:54 .
drwxr-xr-x 6 john staff 192 Jun 27 06:50 ..
-rw-r--r-- 1 john staff 368 Jun 27 07:54 Dockerfile
-rw-r--r-- 1 john staff 3486 Jun 27 07:54 README.md
drwxr-xr-x 8 john staff 256 Jun 27 07:54 build
-rw-r--r-- 1 john staff 217 Jun 27 07:54 docker-compose.yml
drwxr-xr-x 817 john staff 26144 Jun 27 07:54 node_modules
-rw-r--r-- 1 john staff 1075501 Jun 27 07:54 package-lock.json
-rw-r--r-- 1 john staff 1185 Jun 27 07:54 package.json
-rw-r--r-- 1 john staff 82 Jun 27 07:54 postcss.config.js
drwxr-xr-x 9 john staff 288 Jun 27 07:54 public
drwxr-xr-x 18 john staff 576 Jun 27 07:54 src
-rw-r--r-- 1 john staff 2836 Jun 27 07:54 tailwind.config.js
None of the invisible files with a period in front have NOT been copied over. Any ideas?
cp -rpv . /path/to/other/folder/

find command with -atime appears to ignore dates

This command doesn't behave as I would expect. -atime +1 says "anything accessed within the last 24 hours", correct?
Output:
find . -type f -atime +1 -name 'installActions2*.log' | xargs ls -lt
-rw-r----- 1 bordb oinstall 369657 Nov 15 19:41 ./oms_b4_18604893.bak.15_Nov_14/cfgtoollogs/oui/installActions2014-03-17_09-18-01-PM.log
-rw-r----- 1 andy oinstall 1749422 Mar 17 2014 ./oracle_common/cfgtoollogs/oui/installActions2014-03-17_09-25-00-PM.log
-rw-r----- 1 andy oinstall 369657 Mar 17 2014 ./oms/cfgtoollogs/oui/installActions2014-03-17_09-18-01-PM.log
-rw-r----- 1 andy oinstall 600584 Mar 17 2014 ./jdk16/cfgtoollogs/oui/installActions2014-03-17_06-18-27PM.log
why are the files from March of 2014 and November showing up? So assuming the -atime switch says, "modified earier than the last 24 hours", I changed it to 60, and it lists the current directory, and all its files (ignores the -name switch) and doesn't traverse the subdirectories.
/ora/oracle/product/middleware_12cr3 Unix> find . -type f -atime +60 -name 'installActions2*.log' | xargs ls -lt
total 204
drwxr-xr-x 53 andy oinstall 4096 Jan 8 00:05 oms
drwxr-x--- 51 andy oinstall 4096 Jan 8 00:05 Oracle_WT
drwxr-x--- 33 andy oinstall 4096 Jan 7 22:09 oracle_common
drwxr-xr-x 2 andy oinstall 4096 Nov 20 07:45 logs
drwxr-xr-x 52 andy oinstall 4096 Nov 15 19:44 oms_b4_18604893.bak.15_Nov_14
drwxr-xr-x 10 andy oinstall 4096 Jun 18 2014 plugins
drwxr-xr-x 9 andy oinstall 4096 Jun 2 2014 wlserver_10.3
-rw-rw---- 1 andy oinstall 520 Mar 18 2014 domain-registry.xml
drwxr-x--- 3 andy oinstall 4096 Mar 18 2014 user_projects
drwxr-xr-x 5 andy oinstall 4096 Mar 17 2014 patch_wls1036
-rw-r--r-- 1 andy oinstall 1826 Mar 17 2014 registry.xml
-rw-r--r-- 1 andy oinstall 622 Mar 17 2014 ocm.rsp
-rw-r--r-- 1 andy oinstall 108917 Mar 17 2014 registry.dat
drwxr-xr-x 8 andy oinstall 4096 Mar 17 2014 utils
drwxr-xr-x 7 andy oinstall 36864 Mar 17 2014 modules
drwxr-xr-x 6 andy oinstall 4096 Mar 17 2014 jdk16
anyone know the reason? Sorry if this not an advanced question.
The -*time args to find consider time as growing larger in the past. So +1 means "more than one day ago", not "after one day ago". Try -1 to mean "less than one day ago".

Finding all directories that are world readable

**I cannot use find as I get a permission denied error
I am trying to find all the directories in /students that are world readable. This is what I have so far:
grep 'r-x' | cut -c8-10 | ls -l /students | sort | uniq -c
I don't understand why this is not working. I am telling the shell to search for occurrences of 'r-x'in the 8th-10th characters of ls -l which is other users permissions (hence world readable). Then I'm sorting the output and displaying a count of matching results with uniq -c. This is my understanding of what my shell script should do and I dont see why its not. Any help would be greatly appreciated!
For some reason it's pulling out more than just the directories readable by others.
Here is some sample output (I omitted the majority of the output)
1 drwx------ 11 lluong b20107 4096 May 26 11:15 lluong
1 drwx------ 23 stretbar b20097 4096 Dec 18 2012 stretbar
1 drwx------ 2 slawson b20003 4096 Mar 2 2013 slawson
1 drwx------ 9 fcunha b20117 4096 May 2 15:21 fcunha
1 drwxrwxrwx 10 jwu131 b20117 4096 Jul 2 19:26 jwu131
1 drwxrwxrwx 14 jadler4 b20127 4096 Oct 11 2012 jadler4
1 drwxrwxrwx 5 rlicudo1 b20067 4096 Apr 3 15:28 rlicudo1
1 drwxrwxrwx 8 lkrubner b20107 4096 Oct 25 2011 lkrubner
1 drwxrwxrwx 9 klau53 b20133 4096 Mar 12 2013 klau53
1 drwxrwx--x 14 vrobins9 b20123 4096 Mar 4 2013 vrobins9
1 drwxr-xr-x 10 aguo3 b20107 4096 Sep 24 00:13 aguo3
1 drwxr-xr-x 10 mdanial b20123 4096 Apr 10 20:46 mdanial
1 drwxr-xr-x 11 49 users 4096 Mar 28 2013 trac
1 drwxr-xr-x 11 rroger12 b20133 4096 May 8 10:00 rroger12
1 drwxr-xr-x 12 spark15 b20113 4096 May 15 2012 spark15
1 drwxr-xr-x 18 lulrich1 b20133 4096 Sep 29 22:36 lulrich1
1 drwxr-xr-x 18 yliu192 b20127 4096 Sep 26 12:19 yliu192
1 drwxr-xr-x 19 dstein b20117 4096 Feb 9 2013 dstein
1 drwxr-xr-x 20 jgarc166 b20127 4096 Sep 12 19:22 jgarc166
1 drwxr-xr-x 2 root root 16384 Nov 15 2007 lost+found
1 drwxr-xr-x 4 jsarno b20113 4096 Dec 7 2011 jsarno
1 drwxr-xr-x 6 btaylo19 b20123 4096 Mar 5 2012 btaylo19
1 drwxr-xr-x 6 dtu b20093 4096 Apr 18 19:18 dtu
1 drwxr-xr-x 6 ewu2 b20133 4096 May 4 14:30 ewu2
1 drwxr-xr-x 6 smeehan b20053 4096 Aug 29 00:19 smeehan
1 drwxr-xr-x 6 ybondar2 b20027 4096 May 23 2012 ybondar2
1 drwxr-xr-x 7 apekar b20103 4096 May 10 00:22 apekar
1 drwxr-xr-x 7 root root 4096 Mar 28 2013 tracprojects
1 drwxr-xr-x 8 jhsiao b20117 4096 Jul 26 17:33 jhsiao
1 drwxr-xr-x 8 xfeng18 b20137 4096 Sep 25 14:42 xfeng18
1 drwxr-xr-x 9 cmendo26 b20133 4096 Aug 19 01:22 cmendo26
1 drwx-----x 8 amissiro b20093 4096 May 12 16:00 amissiro
1 drwx--xr-x 17 apinchuk b20127 4096 May 26 23:03 apinchuk
1 drwx--x--x 10 aboak b20093 4096 Feb 18 2013 aboak
1 drwx--x--x 10 achan123 b20133 4096 Sep 6 21:24 achan123
1 drwx--x--x 10 acurkend b20133 4096 Jul 10 13:15 acurkend
1 drwx--x--x 10 akleinii b20133 4096 Jun 21 09:07 akleinii
1 drwx--x--x 10 akobzar b20133 4096 Sep 26 18:51 akobzar
1 drwx--x--x 10 amainett b20137 4096 Sep 22 11:17 amainett
1 drwx--x--x 10 apewther b20127 4096 Feb 6 2013 apewther
1 drwx--x--x 10 asyrtsov b20127 4096 Aug 16 10:43 asyrtsov
1 drwx--x--x 10 bernst b20135 4096 Sep 23 09:12 bernst
1 drwx--x--x 10 blilley b20123 4096 Apr 20 18:08 blilley
1 drwx--x--x 10 bmckeand b20117 4096 Aug 14 14:17 bmckeand
1 drwx--x--x 10 bsmith18 b20097 4096 Jun 10 11:19 bsmith18
1 drwx--x--x 10 bwilli18 b20117 4096 Nov 6 2012 bwilli18
1 drwx--x--x 10 cbeaton b20123 4096 May 19 04:07 cbeaton
1 drwx--x--x 10 cbeck4 b20137 4096 Sep 29 16:08 cbeck4
1 drwx--x--x 10 cho8 b20093 4096 Mar 24 2013 cho8
1 drwx--x--x 10 cliu58 b20117 4096 Oct 8 2012 cliu58
1 drwx--x--x 10 cmitch21 b20133 4096 Mar 10 2013 cmitch21
1 drwx--x--x 10 cnavarr9 b20127 4096 Apr 30 12:11 cnavarr9
1 drwx--x--x 10 dbienenf b20123 4096 Mar 20 2012 dbienenf
1 drwx--x--x 10 dlau13 b20135 4096 Jul 16 12:15 dlau13
1 drwx--x--x 10 dmok1 b20137 4096 Sep 24 12:50 dmok1
1 drwx--x--x 10 dnou b20133 4096 Apr 23 14:12 dnou
1 drwx--x--x 10 drajabar b20137 4096 Sep 3 20:20 drajabar
1 drwx--x--x 10 drodri12 b20115 4096 Sep 27 17:25 drodri12
1 drwx--x--x 10 ealberto b20113 4096 Dec 18 2012 ealberto
Rather than parsing ls, use find:
find /students -perm -o=r
This would list all files and directories in /students that are world readable.
If you don't want to recurse into subdirectories and want to find only directories, say:
find /students -maxdepth 1 -type d -perm -o=r
I am telling the shell to search for occurrences of 'r-x'in the 8th-10th characters of ls -l which is other users permissions (hence world readable).
No you're not. You're looking for "r-x" anywhere in the line and then taking the 8th through 10th characters of the lines found.
find /students -mindepth 1 -maxdepth 1 -type d -perm -005 | ...
"Why you shouldn't parse the output of ls(1)"
ls -lad */ | grep 'r-x' | sort | uniq -c
-d is used to list ONLY directories.
*/ tells *nix to search ONLY the current directory.
ls -lR |grep "^d" | cut -c8-10 | grep 'r-x' | sort | uniq -c

Unix - ls command shows some "outputted" text as a file

bash-3.2$ ls -ls
total 48
4 -rw-r--r-- 1 hdoostie etrade 1545 Aug 8 2012 ~
4 drwxr-xr-- 11 hdoostie etrade 4096 Dec 28 2011 det-us
4 drwxr-xr-- 6 hdoostie etrade 4096 Sep 18 2012 etaf
12 -rw-r--r-- 1 hdoostie etrade 11867 Jul 31 2012 l:template name="expanded_search">
4 drwxr-xr-- 8 hdoostie etrade 4096 Apr 22 11:31 neo
4 drwxr-xr-- 5 hdoostie etrade 4096 Jan 29 14:36 neo-apps-skins
4 drwxr-xr-- 5 hdoostie etrade 4096 Feb 16 2012 neo-webapp-prospect
4 drwxr-xr-- 3 hdoostie etrade 4096 Feb 22 2012 site_04_uat_in_here
4 drwxr-xr-- 3 hdoostie etrade 4096 Jun 20 2012 svntest
4 drwxr-xr-- 3 hdoostie etrade 4096 Feb 23 2012 xborder_in_here
"l:template name="expanded_search">" is some file content that somehow shows as a file. How do I "delete" this "file"?
A way of deleting any file, no matter what characters the filename contains is using it's inode numnber. You can show that using:
ls -i
That will shou you the files with the inode number next to them. Then you can delete that file using:
find -ium [inode_number] -exec rm {} \;
But in this case it should also be enough to just quote the filename:
rm 'l:template name="expanded_search">'
rm l:*
If you're the cautious type:
rm -i l:*

Quit hidden attribute to many files in a directory once in UNIX

Hello Everybody there.
I wanna know if there is a command of set of commands (maybe a pipeline set) which can be used to change the hidden attribute of many files stored in a particular directory, with the same name.
ie.
ls -la inside torrents/music/david_guetta_greatest_hits shows the next files:
drwxrwxrwx 20 crsuarez staff 680 Apr 9 19:25 .
drwxrwxrwx 20 crsuarez staff 680 Apr 9 19:11 ..
-rw-r--r-- 1 crsuarez staff 6894561 Apr 9 19:16 .I'm Famous.wma
-rw-r--r-- 1 crsuarez staff 7543777 Apr 9 19:16 .Gettin Over.wma
-rw-r--r-- 1 crsuarez staff 6378465 Apr 9 19:16 .I Gotta Feeling.wma
-rw-r--r-- 1 crsuarez staff 7245793 Apr 9 19:16 .In love with myself.wma
-rw-r--r-- 1 crsuarez staff 7060449 Apr 9 19:16 .It's the Way You Love Me.wma
-rw-r--r-- 1 crsuarez staff 7737313 Apr 9 19:16 .Love Don't Let Me Go.wma
-rw-r--r-- 1 crsuarez staff 7737313 Apr 9 19:16 .Love is Gone.wma
-rw-r--r-- 1 crsuarez staff 6628321 Apr 9 19:16 .Memories.wma
-rw-r--r-- 1 crsuarez staff 7525345 Apr 9 19:16 .Money.wma
-rw-r--r-- 1 crsuarez staff 7806945 Apr 9 19:16 .One Love.wma
-rw-r--r-- 1 crsuarez staff 7192545 Apr 9 19:16 .Sexy Bitch.wma
-rw-r--r-- 1 crsuarez staff 6954977 Apr 9 19:16 .Stay.wma
-rw-r--r-- 1 crsuarez staff 8025057 Apr 9 19:16 .The World is Mine.wma
-rw-r--r-- 1 crsuarez staff 7769057 Apr 9 19:16 .TitaniuM.wma
-rw-r--r-- 1 crsuarez staff 6693857 Apr 9 19:16 .Turn ME ON.wma
-rw-r--r-- 1 crsuarez staff 7215073 Apr 9 19:16 .When Love Takes Over.wma
-rw-r--r-- 1 crsuarez staff 8182753 Apr 9 19:16 .Without YoU.wma
I wanna unhide all of this files with a single set of commands (I don't care if I have to use pipeline), instead of use mv .hidden_file_name not_hidden_file_name.
The solution must be OSX Complain. ;)
Something like this
for origname in .[0-9A-Za-z]*
do
if [ -f "${origname}" ]; then
# compute your newname how you want it
mv "${origname}" "${newname}
fi
done
You'll have to decide what you want your new names to be - you'll strip off the leading dot '.' but doing only what will probably collide with an existing .wma file with the same name, so maybe also append .tmp -- like:
.One Love.wma --becomes--> One Love.wma.tmp
Use prename (rename on Debian-derived systems).
prename 's/^.//' .*.wma

Resources