Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

Find Files for Rename

$
0
0
Background

Three years ago, I wrote Used More Bash Utilities for batch renaming files. One of my Facebook friends has pointed out that it fails for file names containing whitespace.

Problem

Recently, I would like to remove the extension name .sh of all shell scripts in ~/bin , so that which {script} will work without .sh .

Method

A for loop over $(ls) is a basic solution, but find is more correct since it’s possible that a file name contains a space character.

find ~/bin -maxdepth 1 -name "*.sh" -type f -print0 |\ while read -d $'\0' file; do mv $file ${file%.*} done

A list of matching files is piped to the while loop which iterates through each item delimited by the null character '\0' . The shell expansion ${file%.*} trim off the file extension.


Viewing all articles
Browse latest Browse all 11063

Trending Articles