タイトルにあるように、Ubuntuのディレクトリ内のすべてのファイルの拡張子を変更するにはどうすればよいですか?いくつかの例ではrenameなどを使用していますが、エラー(パッケージ名の変更が見つかりません)が表示され、apt-getからアクセスできません。
さらに、実際には元のファイルの種類がわかりません!これは、Hadoopのファイルシステムからローカルドライブにコピーされたデータであり、すべてが.txt形式である必要があります。
違いがある場合は、Oracle Virtual BoxでUbuntu 12.04を実行しています
編集:ls -l/usr/bin /rename/ etc/alternatives/renameの出力
amartin24@ubuntu-amartin24:~/TwitterMining/JSONTweets$ ls -l /usr/bin/*rename* /etc/alternatives/rename
ls: cannot access /etc/alternatives/rename: No such file or directory
-rwxr-xr-x 1 root root 10392 Mar 30 2012 /usr/bin/rename.ul
問題のディレクトリにcd
して、次のようなものを実行できます。
find -L . -type f -name "*.oldextension" -print0 | while IFS= read -r -d '' FNAME; do
mv -- "$FNAME" "${FNAME%.oldextension}.newextension"
done
または、ファイルに拡張子がまったくない場合:
find -L . -type f -print0 | while IFS= read -r -d '' FNAME; do
mv -- "$FNAME" "${FNAME%}.newextension"
done
あなたの場合、newextension
をtxt
に置き換える必要があります。
Bashを熟知している人は、これをよりうまく分解できるかもしれません。その場合は、お気軽に回答を編集してください。
元の説明:
1)名前を変更しますファイル拡張子のみ(
${FNAME%.so}.dylib
を使用しているため)。${X/.so/.dylib}
を使用する他のすべてのソリューションは、ファイル名に誤って名前を変更するため、間違っています最初の出現.so
(たとえば、x.so.so
はx.dylib.so
に名前が変更されます、またはさらに悪いことに、./libraries/libTemp.so-1.9.3/libTemp.so
は./libraries/libTemp.dylib-1.9.3/libTemp.so
に名前が変更されます-エラー)。2)ファイル名のスペースおよびその他の特殊文字を処理します(二重引用符を除く)。
3)ディレクトリやその他の特別なファイルは変更しません。
4)サブディレクトリへのシンボリックリンクとターゲットファイルへのリンクをたどり、リンク自体ではなくターゲットファイルの名前を変更します(findのデフォルトの動作は、リンクが指すファイルではなく、シンボリックリンク自体を処理することです)。
ソース:
rename
コマンドはすでにインストールされています。他に何かを追加する必要はありません。
rename
は、最初の引数としてPerlコードを取ります。名前変更の具体的なユースケースのほとんどは、正規表現の置換s/REGEXP/REPLACEMENT/
で構成されています。既存の拡張子を削除するには、最後の.
文字で始まるすべてを置き換えます。
rename 's/\.[^.]*$/.txt/' /path/to/directory/*
ファイルに拡張子がない(名前に.
がない)場合、正規表現として$
(ファイル名の末尾に一致する)を使用するか、.txt
を名前。
rename '$_ = "$_.txt"' /path/to/directory/*
ファイルの内容は変更されず、名前が変更されるだけです。データが希望する形式になっていない場合、それはまったく無関係な問題です。
このシンプルなbashスクリプトを使用できると思います
rename_ext_script.sh
#!/bin/bash
for file in *
do
mv -- "${file}" "${file%.*}.txt"
done
このスクリプトは、拡張子の有無にかかわらず両方の場合に機能します
概要
Ubuntu Software Centerには、ファイルのバッチの名前を変更するための本当に使いやすい強力なGUIツールpyRenamerがあります。
インストール
Sudo apt-get install pyrenamer
または
(ソース: buntu.com )
スクリーンショット
拡張子のないファイルがたくさんある場合(./out_1
、./out_2
、out_3
、...など):
cd YOUR_DIRECTORY_HERE
ls | xargs -i{} mv {} {}.YOUR_EXTENSION_HERE
例
ls | xargs -i{} mv {} {}.md
このスクリプトがあります。私はそれがダミーの証明ではないことを知っています。つまり、スペースを含むファイルを処理しているときです。だから最初にデトックスを実行します。
#!/bin/bash
# detox *
# uncomment if you want to get rid of spaces and funny characters
script=$(basename $0)
if [ -z "$1" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
clear
echo "Script for adding an extension to files without extension"
echo "---------------------------------------------------------"
echo -e "\n Usage:"
echo -e " $script extension\n"
echo -e "Exampli gratia: \n The command:"
echo " $script txt"
echo -e " will rename:\n FileWithoutExtension -> FileWithoutExtension.txt\n"
else
for file in $(ls -p -I '*.*' | grep -v '/$') # excludes direcotires
do
mv -iv "$file" "$file.$1"
done
fi